aboutsummaryrefslogtreecommitdiff
path: root/std.py
diff options
context:
space:
mode:
Diffstat (limited to 'std.py')
-rw-r--r--std.py19
1 files changed, 10 insertions, 9 deletions
diff --git a/std.py b/std.py
index 0b39d44..fe0ede1 100644
--- a/std.py
+++ b/std.py
@@ -59,18 +59,18 @@ def std_concat(arg1, arg2):
return NebString(f"{arg1.value}{arg2.value}")
# flow control
-def std_if(cond, t_branch, f_branch):
+def std_if(cond, t_branch, f_branch=None):
if cond.value:
if isinstance(t_branch, NebExpression):
- ret = evaluate_expression(t_branch)
+ return evaluate_expression(t_branch)
else:
- ret = t_branch
- else:
+ return t_branch
+ elif f_branch is not None:
if isinstance(t_branch, NebExpression):
- ret = evaluate_expression(f_branch)
+ return evaluate_expression(f_branch)
else:
- ret = f_branch
- return ret
+ return f_branch
+ return NebBool(True)
# type validation
def std_is_string(arg):
@@ -159,8 +159,9 @@ def build_std():
STD["concat"] = [concat_string_string]
# flow control
- if_bool_expr_expr = FuncImpl(NebFunction("if", [NebBool, NebAny, NebAny], NebAny), std_if)
- STD["if"] = [if_bool_expr_expr]
+ if_bool_any_any = FuncImpl(NebFunction("if", [NebBool, NebAny, NebAny], NebAny), std_if)
+ if_bool_any = FuncImpl(NebFunction("if", [NebBool, NebAny], NebAny), std_if)
+ STD["if"] = [if_bool_any_any, if_bool_any]
# type checking
is_string = FuncImpl(NebFunction("string?", [NebAny], NebBool), std_is_string)