Skip to content

Commit ebb76b8

Browse files
feat(transform): Add builtins
1 parent bd2153f commit ebb76b8

2 files changed

Lines changed: 11 additions & 0 deletions

File tree

magicparse/transform.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,10 @@ def assert_positive[T: int | float | Decimal](value: T) -> T:
8484
return value
8585

8686

87+
def is_zero(value: int | float | Decimal) -> bool:
88+
return value == 0
89+
90+
8791
def left_pad_zeroes(value: str, width: int) -> str:
8892
try:
8993
return value.zfill(width)
@@ -167,6 +171,7 @@ def get_builtin_functions() -> dict[str, Callable[..., Any]]:
167171
"assert_positive": assert_positive,
168172
"coalesce_numbers": coalesce_numbers,
169173
"divide": divide,
174+
"is_zero": is_zero,
170175
"left_pad_zeroes": left_pad_zeroes,
171176
"length": length,
172177
"map_to": map_to,

tests/test_transform.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ def test_divide():
3333
Transform("$divide(1, 0)").evaluate({})
3434

3535

36+
def test_is_zero():
37+
assert Transform(expression="$is_zero(1)").evaluate({}) is False
38+
assert Transform(expression="$is_zero(0)").evaluate({}) is True
39+
assert Transform(expression="$is_zero(input)").evaluate({"input": Decimal(0)}) is True
40+
41+
3642
def test_left_pad_zeroes():
3743
assert Transform('$left_pad_zeroes("", 5)').evaluate({}) == "00000"
3844
assert Transform('$left_pad_zeroes("111", 5)').evaluate({}) == "00111"

0 commit comments

Comments
 (0)