diff options
| author | s-ol <s-ol@users.noreply.github.com> | 2020-04-24 20:25:27 +0000 |
|---|---|---|
| committer | s-ol <s-ol@users.noreply.github.com> | 2020-04-24 20:25:27 +0000 |
| commit | 7b3f0e803836c1ea57836947780f933d89a52270 (patch) | |
| tree | 1f1eb4a748de43be85327e5e9189a6e36ab85793 | |
| parent | add root .gitignore (diff) | |
| download | alive-7b3f0e803836c1ea57836947780f933d89a52270.tar.gz alive-7b3f0e803836c1ea57836947780f933d89a52270.zip | |
relative imports
| -rw-r--r-- | alv/copilot.moon | 16 | ||||
| -rw-r--r-- | alv/module.moon | 2 |
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 |
