aboutsummaryrefslogtreecommitdiff
path: root/neb
diff options
context:
space:
mode:
authormryouse2022-07-20 20:58:01 +0000
committermryouse2022-07-20 20:58:01 +0000
commit21e39d6c9090f71e4be688d0cd73819e97e7c5e7 (patch)
tree8da0b1a28244f62630840503cd39587105f782f3 /neb
parentf736b930ac4ac69ae7c2933317c6d6a197378f0b (diff)
implement multifunc for term
Diffstat (limited to 'neb')
-rw-r--r--neb/std/term.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/neb/std/term.py b/neb/std/term.py
index e028b00..3c82bcf 100644
--- a/neb/std/term.py
+++ b/neb/std/term.py
@@ -1,4 +1,4 @@
-from .. import TypeEnum, Environment, Arg, Builtin, evaluate, InterpretPanic
+from .. import TypeEnum, Environment, Arg, Builtin, evaluate, InterpretPanic, MultiFunction
from ..structs import *
import subprocess
import sys
@@ -9,13 +9,19 @@ def interpretClear(symbol, args, env, ns):
subprocess.run(["clear"])
return List([])
-TERM.register("clear", Builtin("clear", interpretClear, [], return_type=Type(":list")))
+clear_func = Builtin("clear", interpretClear, [], return_type=Type(":list"))
+clear_multi = MultiFunction("clear")
+clear_multi.register(clear_func)
+TERM.register("clear", clear_multi)
def interpretReadLine(symbol, args, env, ns):
ret = input(args[0].value)
return String(ret)
-TERM.register("read-line", Builtin("read-line", interpretReadLine, [Arg("prompt", TypeEnum.STRING)], return_type=Type(":string")))
+readline_func = Builtin("read-line", interpretReadLine, [Arg("prompt", TypeEnum.STRING)], return_type=Type(":string"))
+readline_multi = MultiFunction("read-line")
+readline_multi.register(readline_func)
+TERM.register("read-line", readline_multi)
def interpretReadChar(symbol, args, env, ns):
import termios, tty
@@ -30,4 +36,7 @@ def interpretReadChar(symbol, args, env, ns):
termios.tcsetattr(fd, termios.TCSADRAIN, old)
return String(ch.decode("utf-8"))
-TERM.register("read-char", Builtin("read-char", interpretReadChar, [], return_type=Type(":string")))
+readchar_func = Builtin("read-char", interpretReadChar, [], return_type=Type(":string"))
+readchar_multi = MultiFunction("read-char")
+readchar_multi.register(readchar_func)
+TERM.register("read-char", readchar_multi)