aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2020-04-24 20:25:27 +0000
committers-ol <s-ol@users.noreply.github.com>2020-04-24 20:25:27 +0000
commit7b3f0e803836c1ea57836947780f933d89a52270 (patch)
tree1f1eb4a748de43be85327e5e9189a6e36ab85793
parentadd root .gitignore (diff)
downloadalive-7b3f0e803836c1ea57836947780f933d89a52270.tar.gz
alive-7b3f0e803836c1ea57836947780f933d89a52270.zip
relative imports
-rw-r--r--alv/copilot.moon16
-rw-r--r--alv/module.moon2
2 files changed, 14 insertions, 4 deletions
diff --git a/alv/copilot.moon b/alv/copilot.moon
index 1f612a3..2b97d48 100644
--- a/alv/copilot.moon
+++ b/alv/copilot.moon
@@ -36,6 +36,7 @@ class Copilot
old\destroy!
@last_modules.__root = Module file
+ @active_module = @last_modules.__root
--- require a module.
-- @tparam string name
@@ -50,9 +51,16 @@ class Copilot
if mod = @modules[name]
mod.root\make_ref!
else
- @modules[name] = @last_modules[name] or Module "#{name}.alv"
- @modules[name]\eval!
- @modules[name].root
+ last = @active_module
+ prefix = @active_module.file\match('(.*)/[^/]*$') .. '/' or ''
+ mod = @last_modules[name] or Module "#{prefix}#{name}.alv"
+ @active_module = mod
+ ok, err = pcall mod\eval
+ @active_module = last
+ if ok
+ mod.root
+ else
+ error err
--- poll for changes and tick.
tick: =>
@@ -88,7 +96,7 @@ class Copilot
return if #dirty == 0
L\set_time 'eval'
- L\print "changed to files: #{table.concat [m.file for m in *dirty], ', '}"
+ L\print "changes to files: #{table.concat [m.file for m in *dirty], ', '}"
@modules = { __root: @last_modules.__root }
ok, err = Error.try "processing changes", @modules.__root\eval
diff --git a/alv/module.moon b/alv/module.moon
index b6244d8..356bcf5 100644
--- a/alv/module.moon
+++ b/alv/module.moon
@@ -67,6 +67,8 @@ class Module
destroy: =>
@registry\destroy!
+ __tostring: => "<Module #{@file}>"
+
--- the last updated AST tree for this module.
-- @tfield ?AST ast