diff options
Diffstat (limited to 'core/cycle.moon')
| -rw-r--r-- | core/cycle.moon | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/core/cycle.moon b/core/cycle.moon new file mode 100644 index 0000000..57d4a75 --- /dev/null +++ b/core/cycle.moon @@ -0,0 +1,26 @@ +-- late-resolve cyclic dependencies +-- +-- this module provides a proxy for resolving values from modules which cannot +-- be loaded due to cyclic dependencies. Instead of +-- +-- import Something from require 'core.somewhere' +-- Something ... +-- +-- use +-- +-- import somewhere from require 'core.cycle' +-- somewhere.Something ... +-- +-- Make sure cycle:load() is called before you access or dereference +-- `somewhere`. + +load = => + for name, module in pairs @ + for k, v in pairs require "core.#{name}" + module[k] = v + +setmetatable {}, __index: (key) => + return load if key == 'load' + + with v = {} + rawset @, key, v |
