diff --git a/src/caoscrawler/transformer_functions.py b/src/caoscrawler/transformer_functions.py index 842c4c0986deff51908a79f4cd2d7c4c5ecc3e56..b68c9f64d9f2da8b1d51d35598c579bfee7511ab 100644 --- a/src/caoscrawler/transformer_functions.py +++ b/src/caoscrawler/transformer_functions.py @@ -4,5 +4,12 @@ from typing import Any +import re + def ifelse(in_value: Any, in_parameters: dict): - raise NotImplementedError() + if "match" not in in_parameters or "then" not in in_parameters: + raise RuntimeError("Mandatory parameters missing.") + + if re.match(in_parameters["match"], in_value) is not None: + return in_parameters["then"] + return in_value diff --git a/unittests/test_transformers.py b/unittests/test_transformers.py index 9df450ee9c1c7997a5e1c0a4e8783bf31c8cd604..c7cfe030f9b424db7de946cd3c0f4f4c74d4c822 100644 --- a/unittests/test_transformers.py +++ b/unittests/test_transformers.py @@ -59,14 +59,18 @@ def test_simple_transformer(): records = scan_directory(UNITTESTDIR / "test_directories" / "test_transformers", UNITTESTDIR / "test_directories" / "test_transformers" / "cfood.yml") - breakpoint() + for r in records: assert r.get_property("Day") is not None assert r.get_property("DayShort") is not None assert r.get_property("DayShort").value != "$day_short" if r.get_property("DayShort").value == "Unk": # This unkown folder should not lead to a replacement - assert r.get_property("Day").value == "$day_long" + assert r.get_property("Day").value == "Unk" + elif r.get_property("DayShort").value == "Mon": + assert r.get_property("Day").value == "Monday" + elif r.get_property("DayShort").value == "Tue": + assert r.get_property("Day").value == "Tuesday" else: assert r.get_property("Day").value != "$day_long"