aboutsummaryrefslogtreecommitdiff
path: root/neb/std/strings.py
diff options
context:
space:
mode:
Diffstat (limited to 'neb/std/strings.py')
-rw-r--r--neb/std/strings.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/neb/std/strings.py b/neb/std/strings.py
index 1d6d7e4..21bd0a3 100644
--- a/neb/std/strings.py
+++ b/neb/std/strings.py
@@ -93,3 +93,29 @@ ord_func = Builtin("ord", interpretOrd, [Arg("char", TypeEnum.STRING)], return_t
ord_multi = MultiFunction("ord")
ord_multi.register(ord_func)
STRINGS.register("ord", ord_multi)
+
+def interpretStringReverse(symbol, args, env, ns):
+ return String(args[0].value[::-1])
+
+string_reverse_func = Builtin("reverse", interpretStringReverse, [Arg("str", TypeEnum.STRING)], return_type=Type(":string"))
+string_reverse_multi = MultiFunction("reverse")
+string_reverse_multi.register(string_reverse_func)
+STRINGS.register("reverse", string_reverse_multi)
+
+def interpretStringLast(symbol, args, env, ns):
+ if len(args[0].value) == 0:
+ raise InterpretPanic(symbol, "string is empty")
+ return String(args[0].value[-1])
+
+string_last_func = Builtin("last", interpretStringLast, [Arg("string", TypeEnum.STRING)], return_type=Type(":string"))
+string_last_multi = MultiFunction("last")
+string_last_multi.register(string_last_func)
+STRINGS.register("last", string_last_multi)
+
+def interpretStringMost(symbol, args, env, ns):
+ return String(args[0].value[:-1])
+
+string_most_func = Builtin("most", interpretStringMost, [Arg("string", TypeEnum.STRING)], return_type=Type(":string"))
+string_most_multi = MultiFunction("most")
+string_most_multi.register(string_most_func)
+STRINGS.register("most", string_most_multi)