refactor(driver): harden preset parsing and refresh tooling
This commit is contained in:
@@ -19,8 +19,45 @@ class Preset:
|
||||
def edit(self, data=None):
|
||||
if not data:
|
||||
return False
|
||||
aliases = {
|
||||
"pattern": "p",
|
||||
"colors": "c",
|
||||
"delay": "d",
|
||||
"brightness": "b",
|
||||
"auto": "a",
|
||||
}
|
||||
int_fields = {"d", "b", "n1", "n2", "n3", "n4", "n5", "n6"}
|
||||
allowed_fields = {"p", "c", "d", "b", "a", "n1", "n2", "n3", "n4", "n5", "n6"}
|
||||
for key, value in data.items():
|
||||
setattr(self, key, value)
|
||||
key = aliases.get(key, key)
|
||||
if key not in allowed_fields:
|
||||
continue
|
||||
if key in int_fields:
|
||||
try:
|
||||
parsed = int(value)
|
||||
if key == "b":
|
||||
parsed = max(0, min(255, parsed))
|
||||
elif key in ("d", "n1", "n2", "n3", "n4", "n5", "n6"):
|
||||
parsed = max(0, parsed)
|
||||
setattr(self, key, parsed)
|
||||
except (TypeError, ValueError):
|
||||
continue
|
||||
elif key == "a":
|
||||
if isinstance(value, bool):
|
||||
self.a = value
|
||||
elif isinstance(value, int):
|
||||
self.a = bool(value)
|
||||
elif isinstance(value, str):
|
||||
lowered = value.lower()
|
||||
if lowered in ("true", "1", "yes", "on"):
|
||||
self.a = True
|
||||
elif lowered in ("false", "0", "no", "off"):
|
||||
self.a = False
|
||||
elif key == "c":
|
||||
if isinstance(value, (list, tuple)):
|
||||
self.c = value
|
||||
else:
|
||||
setattr(self, key, value)
|
||||
return True
|
||||
|
||||
@property
|
||||
|
||||
Reference in New Issue
Block a user