diff options
| author | mryouse | 2022-07-14 01:50:29 +0000 |
|---|---|---|
| committer | mryouse | 2022-07-14 01:50:29 +0000 |
| commit | 3701c619a2421f8c587888ad5443382c5a059b4d (patch) | |
| tree | 16c0d5ab2f0fa6abc7e5659b4b9979192f8dec50 | |
| parent | 7ec7bf0a7e1c6c7bf6889c9a3d15413b9eba76ea (diff) | |
add flag to show hidden symbols
| -rw-r--r-- | neb/std/repl.py | 28 |
1 files changed, 20 insertions, 8 deletions
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)] |
