From 3701c619a2421f8c587888ad5443382c5a059b4d Mon Sep 17 00:00:00 2001 From: mryouse Date: Thu, 14 Jul 2022 01:50:29 +0000 Subject: add flag to show hidden symbols --- neb/std/repl.py | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'neb') diff --git a/neb/std/repl.py b/neb/std/repl.py index 6b6be83..32fd260 100644 --- a/neb/std/repl.py +++ b/neb/std/repl.py @@ -13,28 +13,40 @@ def interpretHowTo(symbol, args, env, ns): REPL.register("howto", Builtin("howto", interpretHowTo, [Arg("symbol", TypeEnum.ANY)], return_type=Type(":list"))) def interpretSymbols(symbol, args, env, ns): - keys = [Symbol(k, -1) for k,v in sorted(env.get_all().items())] + if len(args) == 1 and args[0].value: + keys = [Symbol(k, -1) for k,v in sorted(env.get_all().items())] + else: + keys = [Symbol(k, -1) for k,v in sorted(env.get_all().items()) if not k.startswith(".")] return List(keys) -REPL.register("symbols", Builtin("symbols", interpretSymbols, [], return_type=Type(":list"))) +REPL.register("symbols", Builtin("symbols", interpretSymbols, [Arg("all?", TypeEnum.BOOL, optional=True)], return_type=Type(":list"))) def interpretFuncs(symbol, args, env, ns): - keys = [Symbol(k, -1) for k,v in sorted(env.get_all().items()) if isinstance(v, Function)] + if len(args) == 1 and args[0].value: + keys = [Symbol(k, -1) for k,v in sorted(env.get_all().items()) if isinstance(v, Function)] + else: + keys = [Symbol(k, -1) for k,v in sorted(env.get_all().items()) if isinstance(v, Function) and not k.startswith(".")] return List(keys) -REPL.register("funcs", Builtin("funcs", interpretFuncs, [], return_type=Type(":list"))) +REPL.register("funcs", Builtin("funcs", interpretFuncs, [Arg("all?", TypeEnum.BOOL, optional=True)], return_type=Type(":list"))) def interpretUserSymbols(symbol, args, env, ns): - keys = [Symbol(k, -1) for k,v in env.get_all().items() if isinstance(v, UserFunction) or isinstance(v, Literal)] + if len(args) == 1 and args[0].value: + keys = [Symbol(k, -1) for k,v in env.get_all().items() if isinstance(v, UserFunction) or isinstance(v, Literal)] + else: + keys = [Symbol(k, -1) for k,v in env.get_all().items() if (isinstance(v, UserFunction) or isinstance(v, Literal)) and not k.startswith(".")] return List(keys) -REPL.register("user-symbols", Builtin("user-symbols", interpretUserSymbols, [], return_type=Type(":list"))) +REPL.register("user-symbols", Builtin("user-symbols", interpretUserSymbols, [Arg("all?", TypeEnum.BOOL, optional=True)], return_type=Type(":list"))) def interpretUserFuncs(symbol, args, env, ns): - keys = [Symbol(k, -1) for k,v in env.get_all().items() if isinstance(v, UserFunction)] + if len(args) == 1 and args[0].value: + keys = [Symbol(k, -1) for k,v in env.get_all().items() if isinstance(v, UserFunction)] + else: + keys = [Symbol(k, -1) for k,v in env.get_all().items() if isinstance(v, UserFunction) and not k.startswith(".")] return List(keys) -REPL.register("user-funcs", Builtin("user-funcs", interpretUserFuncs, [], return_type=Type(":list"))) +REPL.register("user-funcs", Builtin("user-funcs", interpretUserFuncs, [Arg("all?", TypeEnum.BOOL, optional=True)], return_type=Type(":list"))) def interpretSyntax(symbol, args, env, ns): keys = [Symbol(k, -1) for k,v in sorted(env.get_all().items()) if isinstance(v, NebSyntax)] -- cgit v1.2.3