From 21e39d6c9090f71e4be688d0cd73819e97e7c5e7 Mon Sep 17 00:00:00 2001 From: mryouse Date: Wed, 20 Jul 2022 20:58:01 +0000 Subject: implement multifunc for term --- neb/std/term.py | 17 +++++++++++++---- 1 file 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) -- cgit v1.2.3