70 lines
2.4 KiB
Diff
70 lines
2.4 KiB
Diff
diff --git a/src/processor.py b/src/processor.py
|
|
index 1234567..abcdefg 100644
|
|
--- a/src/processor.py
|
|
+++ b/src/processor.py
|
|
@@ -1,5 +1,65 @@
|
|
"""Data processor module."""
|
|
|
|
|
|
+def process_data(data: dict, config: dict, options: dict | None = None) -> dict:
|
|
+ """Process data with many nested conditions."""
|
|
+ result = {}
|
|
+ options = options or {}
|
|
+
|
|
+ if data.get("type") == "A":
|
|
+ if config.get("mode") == "strict":
|
|
+ if options.get("validate"):
|
|
+ if data.get("value") > 100:
|
|
+ if config.get("transform"):
|
|
+ result["processed"] = data["value"] * 2
|
|
+ else:
|
|
+ result["processed"] = data["value"]
|
|
+ else:
|
|
+ if options.get("default"):
|
|
+ result["processed"] = options["default"]
|
|
+ else:
|
|
+ result["processed"] = 0
|
|
+ else:
|
|
+ result["processed"] = data.get("value", 0)
|
|
+ else:
|
|
+ result["processed"] = data.get("value", 0)
|
|
+ elif data.get("type") == "B":
|
|
+ if config.get("mode") == "strict":
|
|
+ if options.get("validate"):
|
|
+ if data.get("items"):
|
|
+ result["processed"] = len(data["items"])
|
|
+ else:
|
|
+ result["processed"] = 0
|
|
+ else:
|
|
+ result["processed"] = len(data.get("items", []))
|
|
+ else:
|
|
+ result["processed"] = len(data.get("items", []))
|
|
+ elif data.get("type") == "C":
|
|
+ if config.get("mode") == "strict":
|
|
+ if options.get("validate"):
|
|
+ if data.get("text"):
|
|
+ result["processed"] = data["text"].upper()
|
|
+ else:
|
|
+ result["processed"] = ""
|
|
+ else:
|
|
+ result["processed"] = data.get("text", "").upper()
|
|
+ else:
|
|
+ result["processed"] = data.get("text", "").upper()
|
|
+ else:
|
|
+ if config.get("fallback"):
|
|
+ result["processed"] = config["fallback"]
|
|
+ else:
|
|
+ result["processed"] = None
|
|
+
|
|
+ if options.get("timestamp"):
|
|
+ result["timestamp"] = options["timestamp"]
|
|
+ if options.get("source"):
|
|
+ result["source"] = options["source"]
|
|
+
|
|
+ return result
|
|
+
|
|
+
|
|
def simple_function(x: int) -> int:
|
|
"""A simple function."""
|
|
return x * 2
|