From 45926a3715cb36007d5b9e02bbf8e070ae44f055 Mon Sep 17 00:00:00 2001 From: Alexander Schlemmer <alexander@mail-schlemmer.de> Date: Fri, 11 Aug 2023 16:04:04 +0200 Subject: [PATCH] ENH: working implementation of transformer functions --- src/caoscrawler/transformer_functions.py | 9 ++++++++- unittests/test_transformers.py | 8 ++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/caoscrawler/transformer_functions.py b/src/caoscrawler/transformer_functions.py index 842c4c09..b68c9f64 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 9df450ee..c7cfe030 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" -- GitLab