aboutsummaryrefslogtreecommitdiff
path: root/neb
diff options
context:
space:
mode:
authormryouse2022-07-16 00:12:28 +0000
committermryouse2022-07-16 00:12:28 +0000
commit82b5aed115e74800fc057b96cc677653b55487b2 (patch)
treee050c7850046e8812d992b1019ee4c276b8bbfec /neb
parent5346ededce048d4baae16acdd5b3092d8a004890 (diff)
update 'use' to reference libs directory
Diffstat (limited to 'neb')
-rw-r--r--neb/std/core.py15
1 files changed, 9 insertions, 6 deletions
diff --git a/neb/std/core.py b/neb/std/core.py
index ea80d86..cd6a112 100644
--- a/neb/std/core.py
+++ b/neb/std/core.py
@@ -202,17 +202,20 @@ CORE.register("while", NebSyntax("while", interpretWhile, [Arg("cond", TypeEnum.
# NOTE this doesn't technically need to be a macro
def interpretUse(symbol, args, env, ns):
target = evaluate(args[0], env, ns)
- if not isinstance(target, String):
- raise InterpretPanic(symbol, "filename must be a :string", target)
- target_file = Path(target.value).resolve()
- if not target_file.exists():
- raise InterpretPanic(symbol, "no such file", target_file)
+ libs = Path("~/.local/share/neb/libs/").expanduser().glob("*.neb")
+ target_file_list = [p for p in libs if p.stem == target.value]
+ if len(target_file_list) == 1:
+ target_file = target_file_list[0]
+ else:
+ target_file = Path(target.value).resolve()
+ if not target_file.exists():
+ raise InterpretPanic(symbol, "no such file or lib", target_file)
with open(target_file, "r") as fil:
data = fil.read()
interpret(parse(lex(data)), env, ns)
return List([])
-CORE.register("use", NebSyntax("use", interpretUse, [Arg("filename", TypeEnum.STRING)], return_type=Type(":list")))
+CORE.register("use", NebSyntax("use", interpretUse, [Arg("lib-or-file", TypeEnum.STRING)], return_type=Type(":list")))
# NOTE this doesn't technically need to be a macro
def interpretAssert(symbol, args, env, ns):