rufus-lua-moon 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/vendor/lua/moon/init.moon +1 -1
 - data/vendor/lua/moonscript/compile/statement.lua +26 -26
 - data/vendor/lua/moonscript/compile/value.lua +24 -22
 - data/vendor/lua/moonscript/compile.lua +165 -68
 - data/vendor/lua/moonscript/data.lua +11 -6
 - data/vendor/lua/moonscript/dump.lua +8 -3
 - data/vendor/lua/moonscript/errors.lua +18 -6
 - data/vendor/lua/moonscript/init.lua +37 -21
 - data/vendor/lua/moonscript/line_tables.lua +1 -0
 - data/vendor/lua/moonscript/parse.lua +34 -20
 - data/vendor/lua/moonscript/transform/destructure.lua +234 -0
 - data/vendor/lua/moonscript/transform/names.lua +144 -0
 - data/vendor/lua/moonscript/transform.lua +230 -263
 - data/vendor/lua/moonscript/types.lua +75 -31
 - data/vendor/lua/moonscript/util.lua +102 -28
 - data/vendor/lua/moonscript/version.lua +1 -1
 - metadata +4 -2
 - data/vendor/lua/moonscript/compile/format.lua +0 -49
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 8f13af8210eb004073fdf11246d1356b14ba446d
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 02f5ad9b840120561df6e3d32c1a3ca3cb260cfa
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 36b11319d336fdd59eca5115a0b8dac529202e8fd6429e180ceda591de2ae0d7fecf0f92222a0906367b9f5467dcb161c99b740ec7a1f22c68745750987dcc75
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 6cc4892809f47bd2c61ce32fc7c29159bd5af661da191c7fcf61ec046c551c6ed659eb2b7d03d5b4716154cfe5e32aef40caa66f80b3ec8e3179c3f95af83d25
         
     | 
    
        data/vendor/lua/moon/init.moon
    CHANGED
    
    
| 
         @@ -1,16 +1,13 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module("moonscript.compile", package.seeall)
         
     | 
| 
       2 
1 
     | 
    
         
             
            local util = require("moonscript.util")
         
     | 
| 
       3 
     | 
    
         
            -
            require("moonscript. 
     | 
| 
       4 
     | 
    
         
            -
            local  
     | 
| 
       5 
     | 
    
         
            -
            local transform = require("moonscript.transform")
         
     | 
| 
       6 
     | 
    
         
            -
            local reversed = util.reversed
         
     | 
| 
      
 2 
     | 
    
         
            +
            local data = require("moonscript.data")
         
     | 
| 
      
 3 
     | 
    
         
            +
            local reversed, unpack = util.reversed, util.unpack
         
     | 
| 
       7 
4 
     | 
    
         
             
            local ntype
         
     | 
| 
       8 
5 
     | 
    
         
             
            do
         
     | 
| 
       9 
6 
     | 
    
         
             
              local _table_0 = require("moonscript.types")
         
     | 
| 
       10 
7 
     | 
    
         
             
              ntype = _table_0.ntype
         
     | 
| 
       11 
8 
     | 
    
         
             
            end
         
     | 
| 
       12 
9 
     | 
    
         
             
            local concat, insert = table.concat, table.insert
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
            local statement_compilers = {
         
     | 
| 
       14 
11 
     | 
    
         
             
              raw = function(self, node)
         
     | 
| 
       15 
12 
     | 
    
         
             
                return self:add(node[2])
         
     | 
| 
       16 
13 
     | 
    
         
             
              end,
         
     | 
| 
         @@ -29,12 +26,12 @@ line_compile = { 
     | 
|
| 
       29 
26 
     | 
    
         
             
                    local _with_0 = self:line("local ")
         
     | 
| 
       30 
27 
     | 
    
         
             
                    _with_0:append_list((function()
         
     | 
| 
       31 
28 
     | 
    
         
             
                      local _accum_0 = { }
         
     | 
| 
       32 
     | 
    
         
            -
                      local _len_0 =  
     | 
| 
      
 29 
     | 
    
         
            +
                      local _len_0 = 1
         
     | 
| 
       33 
30 
     | 
    
         
             
                      local _list_0 = undeclared
         
     | 
| 
       34 
31 
     | 
    
         
             
                      for _index_0 = 1, #_list_0 do
         
     | 
| 
       35 
32 
     | 
    
         
             
                        local name = _list_0[_index_0]
         
     | 
| 
       36 
     | 
    
         
            -
                        _len_0 = _len_0 + 1
         
     | 
| 
       37 
33 
     | 
    
         
             
                        _accum_0[_len_0] = self:name(name)
         
     | 
| 
      
 34 
     | 
    
         
            +
                        _len_0 = _len_0 + 1
         
     | 
| 
       38 
35 
     | 
    
         
             
                      end
         
     | 
| 
       39 
36 
     | 
    
         
             
                      return _accum_0
         
     | 
| 
       40 
37 
     | 
    
         
             
                    end)(), ", ")
         
     | 
| 
         @@ -49,12 +46,12 @@ line_compile = { 
     | 
|
| 
       49 
46 
     | 
    
         
             
                  local _with_0 = self:line("local ")
         
     | 
| 
       50 
47 
     | 
    
         
             
                  _with_0:append_list((function()
         
     | 
| 
       51 
48 
     | 
    
         
             
                    local _accum_0 = { }
         
     | 
| 
       52 
     | 
    
         
            -
                    local _len_0 =  
     | 
| 
      
 49 
     | 
    
         
            +
                    local _len_0 = 1
         
     | 
| 
       53 
50 
     | 
    
         
             
                    local _list_0 = names
         
     | 
| 
       54 
51 
     | 
    
         
             
                    for _index_0 = 1, #_list_0 do
         
     | 
| 
       55 
52 
     | 
    
         
             
                      local name = _list_0[_index_0]
         
     | 
| 
       56 
     | 
    
         
            -
                      _len_0 = _len_0 + 1
         
     | 
| 
       57 
53 
     | 
    
         
             
                      _accum_0[_len_0] = self:name(name)
         
     | 
| 
      
 54 
     | 
    
         
            +
                      _len_0 = _len_0 + 1
         
     | 
| 
       58 
55 
     | 
    
         
             
                    end
         
     | 
| 
       59 
56 
     | 
    
         
             
                    return _accum_0
         
     | 
| 
       60 
57 
     | 
    
         
             
                  end)(), ", ")
         
     | 
| 
         @@ -83,12 +80,12 @@ line_compile = { 
     | 
|
| 
       83 
80 
     | 
    
         
             
                    end
         
     | 
| 
       84 
81 
     | 
    
         
             
                    _with_0:append_list((function()
         
     | 
| 
       85 
82 
     | 
    
         
             
                      local _accum_0 = { }
         
     | 
| 
       86 
     | 
    
         
            -
                      local _len_0 =  
     | 
| 
      
 83 
     | 
    
         
            +
                      local _len_0 = 1
         
     | 
| 
       87 
84 
     | 
    
         
             
                      local _list_0 = names
         
     | 
| 
       88 
85 
     | 
    
         
             
                      for _index_0 = 1, #_list_0 do
         
     | 
| 
       89 
86 
     | 
    
         
             
                        local name = _list_0[_index_0]
         
     | 
| 
       90 
     | 
    
         
            -
                        _len_0 = _len_0 + 1
         
     | 
| 
       91 
87 
     | 
    
         
             
                        _accum_0[_len_0] = self:value(name)
         
     | 
| 
      
 88 
     | 
    
         
            +
                        _len_0 = _len_0 + 1
         
     | 
| 
       92 
89 
     | 
    
         
             
                      end
         
     | 
| 
       93 
90 
     | 
    
         
             
                      return _accum_0
         
     | 
| 
       94 
91 
     | 
    
         
             
                    end)(), ", ")
         
     | 
| 
         @@ -96,12 +93,12 @@ line_compile = { 
     | 
|
| 
       96 
93 
     | 
    
         
             
                  _with_0:append(" = ")
         
     | 
| 
       97 
94 
     | 
    
         
             
                  _with_0:append_list((function()
         
     | 
| 
       98 
95 
     | 
    
         
             
                    local _accum_0 = { }
         
     | 
| 
       99 
     | 
    
         
            -
                    local _len_0 =  
     | 
| 
      
 96 
     | 
    
         
            +
                    local _len_0 = 1
         
     | 
| 
       100 
97 
     | 
    
         
             
                    local _list_0 = values
         
     | 
| 
       101 
98 
     | 
    
         
             
                    for _index_0 = 1, #_list_0 do
         
     | 
| 
       102 
99 
     | 
    
         
             
                      local v = _list_0[_index_0]
         
     | 
| 
       103 
     | 
    
         
            -
                      _len_0 = _len_0 + 1
         
     | 
| 
       104 
100 
     | 
    
         
             
                      _accum_0[_len_0] = self:value(v)
         
     | 
| 
      
 101 
     | 
    
         
            +
                      _len_0 = _len_0 + 1
         
     | 
| 
       105 
102 
     | 
    
         
             
                    end
         
     | 
| 
       106 
103 
     | 
    
         
             
                    return _accum_0
         
     | 
| 
       107 
104 
     | 
    
         
             
                  end)(), ", ")
         
     | 
| 
         @@ -186,34 +183,34 @@ line_compile = { 
     | 
|
| 
       186 
183 
     | 
    
         
             
                do
         
     | 
| 
       187 
184 
     | 
    
         
             
                  local _with_0 = self:line()
         
     | 
| 
       188 
185 
     | 
    
         
             
                  _with_0:append("for ")
         
     | 
| 
       189 
     | 
    
         
            -
                  _with_0 
     | 
| 
      
 186 
     | 
    
         
            +
                  loop = _with_0
         
     | 
| 
      
 187 
     | 
    
         
            +
                end
         
     | 
| 
      
 188 
     | 
    
         
            +
                do
         
     | 
| 
      
 189 
     | 
    
         
            +
                  local _with_0 = self:block(loop)
         
     | 
| 
      
 190 
     | 
    
         
            +
                  loop:append_list((function()
         
     | 
| 
       190 
191 
     | 
    
         
             
                    local _accum_0 = { }
         
     | 
| 
       191 
     | 
    
         
            -
                    local _len_0 =  
     | 
| 
      
 192 
     | 
    
         
            +
                    local _len_0 = 1
         
     | 
| 
       192 
193 
     | 
    
         
             
                    local _list_0 = names
         
     | 
| 
       193 
194 
     | 
    
         
             
                    for _index_0 = 1, #_list_0 do
         
     | 
| 
       194 
195 
     | 
    
         
             
                      local name = _list_0[_index_0]
         
     | 
| 
      
 196 
     | 
    
         
            +
                      _accum_0[_len_0] = _with_0:name(name, false)
         
     | 
| 
       195 
197 
     | 
    
         
             
                      _len_0 = _len_0 + 1
         
     | 
| 
       196 
     | 
    
         
            -
                      _accum_0[_len_0] = self:name(name)
         
     | 
| 
       197 
198 
     | 
    
         
             
                    end
         
     | 
| 
       198 
199 
     | 
    
         
             
                    return _accum_0
         
     | 
| 
       199 
200 
     | 
    
         
             
                  end)(), ", ")
         
     | 
| 
       200 
     | 
    
         
            -
                   
     | 
| 
       201 
     | 
    
         
            -
                   
     | 
| 
      
 201 
     | 
    
         
            +
                  loop:append(" in ")
         
     | 
| 
      
 202 
     | 
    
         
            +
                  loop:append_list((function()
         
     | 
| 
       202 
203 
     | 
    
         
             
                    local _accum_0 = { }
         
     | 
| 
       203 
     | 
    
         
            -
                    local _len_0 =  
     | 
| 
      
 204 
     | 
    
         
            +
                    local _len_0 = 1
         
     | 
| 
       204 
205 
     | 
    
         
             
                    local _list_0 = exps
         
     | 
| 
       205 
206 
     | 
    
         
             
                    for _index_0 = 1, #_list_0 do
         
     | 
| 
       206 
207 
     | 
    
         
             
                      local exp = _list_0[_index_0]
         
     | 
| 
       207 
     | 
    
         
            -
                      _len_0 = _len_0 + 1
         
     | 
| 
       208 
208 
     | 
    
         
             
                      _accum_0[_len_0] = self:value(exp)
         
     | 
| 
      
 209 
     | 
    
         
            +
                      _len_0 = _len_0 + 1
         
     | 
| 
       209 
210 
     | 
    
         
             
                    end
         
     | 
| 
       210 
211 
     | 
    
         
             
                    return _accum_0
         
     | 
| 
       211 
212 
     | 
    
         
             
                  end)(), ",")
         
     | 
| 
       212 
     | 
    
         
            -
                   
     | 
| 
       213 
     | 
    
         
            -
                  loop = _with_0
         
     | 
| 
       214 
     | 
    
         
            -
                end
         
     | 
| 
       215 
     | 
    
         
            -
                do
         
     | 
| 
       216 
     | 
    
         
            -
                  local _with_0 = self:block(loop)
         
     | 
| 
      
 213 
     | 
    
         
            +
                  loop:append(" do")
         
     | 
| 
       217 
214 
     | 
    
         
             
                  _with_0:declare(names)
         
     | 
| 
       218 
215 
     | 
    
         
             
                  _with_0:stms(block)
         
     | 
| 
       219 
216 
     | 
    
         
             
                  return _with_0
         
     | 
| 
         @@ -247,3 +244,6 @@ line_compile = { 
     | 
|
| 
       247 
244 
     | 
    
         
             
                end
         
     | 
| 
       248 
245 
     | 
    
         
             
              end
         
     | 
| 
       249 
246 
     | 
    
         
             
            }
         
     | 
| 
      
 247 
     | 
    
         
            +
            return {
         
     | 
| 
      
 248 
     | 
    
         
            +
              statement_compilers = statement_compilers
         
     | 
| 
      
 249 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -1,15 +1,19 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module("moonscript.compile", package.seeall)
         
     | 
| 
       2 
1 
     | 
    
         
             
            local util = require("moonscript.util")
         
     | 
| 
       3 
2 
     | 
    
         
             
            local data = require("moonscript.data")
         
     | 
| 
       4 
     | 
    
         
            -
            require("moonscript.compile.format")
         
     | 
| 
       5 
3 
     | 
    
         
             
            local ntype
         
     | 
| 
       6 
4 
     | 
    
         
             
            do
         
     | 
| 
       7 
5 
     | 
    
         
             
              local _table_0 = require("moonscript.types")
         
     | 
| 
       8 
6 
     | 
    
         
             
              ntype = _table_0.ntype
         
     | 
| 
       9 
7 
     | 
    
         
             
            end
         
     | 
| 
      
 8 
     | 
    
         
            +
            local user_error
         
     | 
| 
      
 9 
     | 
    
         
            +
            do
         
     | 
| 
      
 10 
     | 
    
         
            +
              local _table_0 = require("moonscript.errors")
         
     | 
| 
      
 11 
     | 
    
         
            +
              user_error = _table_0.user_error
         
     | 
| 
      
 12 
     | 
    
         
            +
            end
         
     | 
| 
       10 
13 
     | 
    
         
             
            local concat, insert = table.concat, table.insert
         
     | 
| 
      
 14 
     | 
    
         
            +
            local unpack = util.unpack
         
     | 
| 
       11 
15 
     | 
    
         
             
            local table_delim = ","
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 16 
     | 
    
         
            +
            local value_compilers = {
         
     | 
| 
       13 
17 
     | 
    
         
             
              exp = function(self, node)
         
     | 
| 
       14 
18 
     | 
    
         
             
                local _comp
         
     | 
| 
       15 
19 
     | 
    
         
             
                _comp = function(i, value)
         
     | 
| 
         @@ -22,11 +26,11 @@ value_compile = { 
     | 
|
| 
       22 
26 
     | 
    
         
             
                  local _with_0 = self:line()
         
     | 
| 
       23 
27 
     | 
    
         
             
                  _with_0:append_list((function()
         
     | 
| 
       24 
28 
     | 
    
         
             
                    local _accum_0 = { }
         
     | 
| 
       25 
     | 
    
         
            -
                    local _len_0 =  
     | 
| 
      
 29 
     | 
    
         
            +
                    local _len_0 = 1
         
     | 
| 
       26 
30 
     | 
    
         
             
                    for i, v in ipairs(node) do
         
     | 
| 
       27 
31 
     | 
    
         
             
                      if i > 1 then
         
     | 
| 
       28 
     | 
    
         
            -
                        _len_0 = _len_0 + 1
         
     | 
| 
       29 
32 
     | 
    
         
             
                        _accum_0[_len_0] = _comp(i, v)
         
     | 
| 
      
 33 
     | 
    
         
            +
                        _len_0 = _len_0 + 1
         
     | 
| 
       30 
34 
     | 
    
         
             
                      end
         
     | 
| 
       31 
35 
     | 
    
         
             
                    end
         
     | 
| 
       32 
36 
     | 
    
         
             
                    return _accum_0
         
     | 
| 
         @@ -39,12 +43,12 @@ value_compile = { 
     | 
|
| 
       39 
43 
     | 
    
         
             
                  local _with_0 = self:line()
         
     | 
| 
       40 
44 
     | 
    
         
             
                  _with_0:append_list((function()
         
     | 
| 
       41 
45 
     | 
    
         
             
                    local _accum_0 = { }
         
     | 
| 
       42 
     | 
    
         
            -
                    local _len_0 =  
     | 
| 
      
 46 
     | 
    
         
            +
                    local _len_0 = 1
         
     | 
| 
       43 
47 
     | 
    
         
             
                    local _list_0 = node
         
     | 
| 
       44 
48 
     | 
    
         
             
                    for _index_0 = 2, #_list_0 do
         
     | 
| 
       45 
49 
     | 
    
         
             
                      local v = _list_0[_index_0]
         
     | 
| 
       46 
     | 
    
         
            -
                      _len_0 = _len_0 + 1
         
     | 
| 
       47 
50 
     | 
    
         
             
                      _accum_0[_len_0] = self:value(v)
         
     | 
| 
      
 51 
     | 
    
         
            +
                      _len_0 = _len_0 + 1
         
     | 
| 
       48 
52 
     | 
    
         
             
                    end
         
     | 
| 
       49 
53 
     | 
    
         
             
                    return _accum_0
         
     | 
| 
       50 
54 
     | 
    
         
             
                  end)(), ", ")
         
     | 
| 
         @@ -114,7 +118,7 @@ value_compile = { 
     | 
|
| 
       114 
118 
     | 
    
         
             
                local self_args = { }
         
     | 
| 
       115 
119 
     | 
    
         
             
                local arg_names = (function()
         
     | 
| 
       116 
120 
     | 
    
         
             
                  local _accum_0 = { }
         
     | 
| 
       117 
     | 
    
         
            -
                  local _len_0 =  
     | 
| 
      
 121 
     | 
    
         
            +
                  local _len_0 = 1
         
     | 
| 
       118 
122 
     | 
    
         
             
                  local _list_0 = args
         
     | 
| 
       119 
123 
     | 
    
         
             
                  for _index_0 = 1, #_list_0 do
         
     | 
| 
       120 
124 
     | 
    
         
             
                    local arg = _list_0[_index_0]
         
     | 
| 
         @@ -131,10 +135,8 @@ value_compile = { 
     | 
|
| 
       131 
135 
     | 
    
         
             
                      insert(default_args, arg)
         
     | 
| 
       132 
136 
     | 
    
         
             
                    end
         
     | 
| 
       133 
137 
     | 
    
         
             
                    local _value_0 = name
         
     | 
| 
       134 
     | 
    
         
            -
                     
     | 
| 
       135 
     | 
    
         
            -
             
     | 
| 
       136 
     | 
    
         
            -
                      _accum_0[_len_0] = _value_0
         
     | 
| 
       137 
     | 
    
         
            -
                    end
         
     | 
| 
      
 138 
     | 
    
         
            +
                    _accum_0[_len_0] = _value_0
         
     | 
| 
      
 139 
     | 
    
         
            +
                    _len_0 = _len_0 + 1
         
     | 
| 
       138 
140 
     | 
    
         
             
                  end
         
     | 
| 
       139 
141 
     | 
    
         
             
                  return _accum_0
         
     | 
| 
       140 
142 
     | 
    
         
             
                end)()
         
     | 
| 
         @@ -181,12 +183,12 @@ value_compile = { 
     | 
|
| 
       181 
183 
     | 
    
         
             
                  end
         
     | 
| 
       182 
184 
     | 
    
         
             
                  local self_arg_values = (function()
         
     | 
| 
       183 
185 
     | 
    
         
             
                    local _accum_0 = { }
         
     | 
| 
       184 
     | 
    
         
            -
                    local _len_0 =  
     | 
| 
      
 186 
     | 
    
         
            +
                    local _len_0 = 1
         
     | 
| 
       185 
187 
     | 
    
         
             
                    local _list_2 = self_args
         
     | 
| 
       186 
188 
     | 
    
         
             
                    for _index_0 = 1, #_list_2 do
         
     | 
| 
       187 
189 
     | 
    
         
             
                      local arg = _list_2[_index_0]
         
     | 
| 
       188 
     | 
    
         
            -
                      _len_0 = _len_0 + 1
         
     | 
| 
       189 
190 
     | 
    
         
             
                      _accum_0[_len_0] = arg[2]
         
     | 
| 
      
 191 
     | 
    
         
            +
                      _len_0 = _len_0 + 1
         
     | 
| 
       190 
192 
     | 
    
         
             
                    end
         
     | 
| 
       191 
193 
     | 
    
         
             
                    return _accum_0
         
     | 
| 
       192 
194 
     | 
    
         
             
                  end)()
         
     | 
| 
         @@ -201,15 +203,12 @@ value_compile = { 
     | 
|
| 
       201 
203 
     | 
    
         
             
                  if #args > #arg_names then
         
     | 
| 
       202 
204 
     | 
    
         
             
                    arg_names = (function()
         
     | 
| 
       203 
205 
     | 
    
         
             
                      local _accum_0 = { }
         
     | 
| 
       204 
     | 
    
         
            -
                      local _len_0 =  
     | 
| 
      
 206 
     | 
    
         
            +
                      local _len_0 = 1
         
     | 
| 
       205 
207 
     | 
    
         
             
                      local _list_2 = args
         
     | 
| 
       206 
208 
     | 
    
         
             
                      for _index_0 = 1, #_list_2 do
         
     | 
| 
       207 
209 
     | 
    
         
             
                        local arg = _list_2[_index_0]
         
     | 
| 
       208 
     | 
    
         
            -
                         
     | 
| 
       209 
     | 
    
         
            -
                         
     | 
| 
       210 
     | 
    
         
            -
                          _len_0 = _len_0 + 1
         
     | 
| 
       211 
     | 
    
         
            -
                          _accum_0[_len_0] = _value_0
         
     | 
| 
       212 
     | 
    
         
            -
                        end
         
     | 
| 
      
 210 
     | 
    
         
            +
                        _accum_0[_len_0] = arg[1]
         
     | 
| 
      
 211 
     | 
    
         
            +
                        _len_0 = _len_0 + 1
         
     | 
| 
       213 
212 
     | 
    
         
             
                      end
         
     | 
| 
       214 
213 
     | 
    
         
             
                      return _accum_0
         
     | 
| 
       215 
214 
     | 
    
         
             
                    end)()
         
     | 
| 
         @@ -263,8 +262,8 @@ value_compile = { 
     | 
|
| 
       263 
262 
     | 
    
         
             
              minus = function(self, node)
         
     | 
| 
       264 
263 
     | 
    
         
             
                return self:line("-", self:value(node[2]))
         
     | 
| 
       265 
264 
     | 
    
         
             
              end,
         
     | 
| 
       266 
     | 
    
         
            -
              temp_name = function(self, node)
         
     | 
| 
       267 
     | 
    
         
            -
                return node:get_name(self)
         
     | 
| 
      
 265 
     | 
    
         
            +
              temp_name = function(self, node, ...)
         
     | 
| 
      
 266 
     | 
    
         
            +
                return node:get_name(self, ...)
         
     | 
| 
       268 
267 
     | 
    
         
             
              end,
         
     | 
| 
       269 
268 
     | 
    
         
             
              number = function(self, node)
         
     | 
| 
       270 
269 
     | 
    
         
             
                return node[2]
         
     | 
| 
         @@ -298,3 +297,6 @@ value_compile = { 
     | 
|
| 
       298 
297 
     | 
    
         
             
                return tostring(value)
         
     | 
| 
       299 
298 
     | 
    
         
             
              end
         
     | 
| 
       300 
299 
     | 
    
         
             
            }
         
     | 
| 
      
 300 
     | 
    
         
            +
            return {
         
     | 
| 
      
 301 
     | 
    
         
            +
              value_compilers = value_compilers
         
     | 
| 
      
 302 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -1,25 +1,36 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module("moonscript.compile", package.seeall)
         
     | 
| 
       2 
1 
     | 
    
         
             
            local util = require("moonscript.util")
         
     | 
| 
       3 
2 
     | 
    
         
             
            local dump = require("moonscript.dump")
         
     | 
| 
       4 
     | 
    
         
            -
            require("moonscript.compile.format")
         
     | 
| 
       5 
     | 
    
         
            -
            require("moonscript.compile.statement")
         
     | 
| 
       6 
     | 
    
         
            -
            require("moonscript.compile.value")
         
     | 
| 
       7 
3 
     | 
    
         
             
            local transform = require("moonscript.transform")
         
     | 
| 
       8 
     | 
    
         
            -
            local NameProxy, LocalName 
     | 
| 
      
 4 
     | 
    
         
            +
            local NameProxy, LocalName
         
     | 
| 
      
 5 
     | 
    
         
            +
            do
         
     | 
| 
      
 6 
     | 
    
         
            +
              local _table_0 = require("moonscript.transform.names")
         
     | 
| 
      
 7 
     | 
    
         
            +
              NameProxy, LocalName = _table_0.NameProxy, _table_0.LocalName
         
     | 
| 
      
 8 
     | 
    
         
            +
            end
         
     | 
| 
       9 
9 
     | 
    
         
             
            local Set
         
     | 
| 
       10 
10 
     | 
    
         
             
            do
         
     | 
| 
       11 
11 
     | 
    
         
             
              local _table_0 = require("moonscript.data")
         
     | 
| 
       12 
12 
     | 
    
         
             
              Set = _table_0.Set
         
     | 
| 
       13 
13 
     | 
    
         
             
            end
         
     | 
| 
       14 
     | 
    
         
            -
            local ntype
         
     | 
| 
      
 14 
     | 
    
         
            +
            local ntype, has_value
         
     | 
| 
       15 
15 
     | 
    
         
             
            do
         
     | 
| 
       16 
16 
     | 
    
         
             
              local _table_0 = require("moonscript.types")
         
     | 
| 
       17 
     | 
    
         
            -
              ntype = _table_0.ntype
         
     | 
| 
      
 17 
     | 
    
         
            +
              ntype, has_value = _table_0.ntype, _table_0.has_value
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
      
 19 
     | 
    
         
            +
            local statement_compilers
         
     | 
| 
      
 20 
     | 
    
         
            +
            do
         
     | 
| 
      
 21 
     | 
    
         
            +
              local _table_0 = require("moonscript.compile.statement")
         
     | 
| 
      
 22 
     | 
    
         
            +
              statement_compilers = _table_0.statement_compilers
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
      
 24 
     | 
    
         
            +
            local value_compilers
         
     | 
| 
      
 25 
     | 
    
         
            +
            do
         
     | 
| 
      
 26 
     | 
    
         
            +
              local _table_0 = require("moonscript.compile.value")
         
     | 
| 
      
 27 
     | 
    
         
            +
              value_compilers = _table_0.value_compilers
         
     | 
| 
       18 
28 
     | 
    
         
             
            end
         
     | 
| 
       19 
29 
     | 
    
         
             
            local concat, insert = table.concat, table.insert
         
     | 
| 
       20 
     | 
    
         
            -
            local pos_to_line, get_closest_line, trim = util.pos_to_line, util.get_closest_line, util.trim
         
     | 
| 
      
 30 
     | 
    
         
            +
            local pos_to_line, get_closest_line, trim, unpack = util.pos_to_line, util.get_closest_line, util.trim, util.unpack
         
     | 
| 
       21 
31 
     | 
    
         
             
            local mtype = util.moon.type
         
     | 
| 
       22 
     | 
    
         
            -
            local  
     | 
| 
      
 32 
     | 
    
         
            +
            local indent_char = "  "
         
     | 
| 
      
 33 
     | 
    
         
            +
            local Line, DelayedLine, Lines, Block, RootBlock
         
     | 
| 
       23 
34 
     | 
    
         
             
            do
         
     | 
| 
       24 
35 
     | 
    
         
             
              local _parent_0 = nil
         
     | 
| 
       25 
36 
     | 
    
         
             
              local _base_0 = {
         
     | 
| 
         @@ -51,13 +62,15 @@ do 
     | 
|
| 
       51 
62 
     | 
    
         
             
                  end
         
     | 
| 
       52 
63 
     | 
    
         
             
                  local posmap = self.posmap
         
     | 
| 
       53 
64 
     | 
    
         
             
                  for i, l in ipairs(self) do
         
     | 
| 
       54 
     | 
    
         
            -
                    local _exp_0 =  
     | 
| 
       55 
     | 
    
         
            -
                    if " 
     | 
| 
       56 
     | 
    
         
            -
                      local _
         
     | 
| 
       57 
     | 
    
         
            -
                      _, line_no = l:flatten_posmap(line_no, out)
         
     | 
| 
       58 
     | 
    
         
            -
                    elseif "string" == _exp_0 then
         
     | 
| 
      
 65 
     | 
    
         
            +
                    local _exp_0 = mtype(l)
         
     | 
| 
      
 66 
     | 
    
         
            +
                    if "string" == _exp_0 or DelayedLine == _exp_0 then
         
     | 
| 
       59 
67 
     | 
    
         
             
                      line_no = line_no + 1
         
     | 
| 
       60 
68 
     | 
    
         
             
                      out[line_no] = posmap[i]
         
     | 
| 
      
 69 
     | 
    
         
            +
                    elseif Lines == _exp_0 then
         
     | 
| 
      
 70 
     | 
    
         
            +
                      local _
         
     | 
| 
      
 71 
     | 
    
         
            +
                      _, line_no = l:flatten_posmap(line_no, out)
         
     | 
| 
      
 72 
     | 
    
         
            +
                    else
         
     | 
| 
      
 73 
     | 
    
         
            +
                      error("Unknown item in Lines: " .. tostring(l))
         
     | 
| 
       61 
74 
     | 
    
         
             
                    end
         
     | 
| 
       62 
75 
     | 
    
         
             
                  end
         
     | 
| 
       63 
76 
     | 
    
         
             
                  return out, line_no
         
     | 
| 
         @@ -71,7 +84,12 @@ do 
     | 
|
| 
       71 
84 
     | 
    
         
             
                  end
         
     | 
| 
       72 
85 
     | 
    
         
             
                  for i = 1, #self do
         
     | 
| 
       73 
86 
     | 
    
         
             
                    local l = self[i]
         
     | 
| 
       74 
     | 
    
         
            -
                    local  
     | 
| 
      
 87 
     | 
    
         
            +
                    local t = mtype(l)
         
     | 
| 
      
 88 
     | 
    
         
            +
                    if t == DelayedLine then
         
     | 
| 
      
 89 
     | 
    
         
            +
                      l = l:render()
         
     | 
| 
      
 90 
     | 
    
         
            +
                      t = "string"
         
     | 
| 
      
 91 
     | 
    
         
            +
                    end
         
     | 
| 
      
 92 
     | 
    
         
            +
                    local _exp_0 = t
         
     | 
| 
       75 
93 
     | 
    
         
             
                    if "string" == _exp_0 then
         
     | 
| 
       76 
94 
     | 
    
         
             
                      if indent then
         
     | 
| 
       77 
95 
     | 
    
         
             
                        insert(buffer, indent)
         
     | 
| 
         @@ -85,8 +103,10 @@ do 
     | 
|
| 
       85 
103 
     | 
    
         
             
                      end
         
     | 
| 
       86 
104 
     | 
    
         
             
                      insert(buffer, "\n")
         
     | 
| 
       87 
105 
     | 
    
         
             
                      local last = l
         
     | 
| 
       88 
     | 
    
         
            -
                    elseif  
     | 
| 
      
 106 
     | 
    
         
            +
                    elseif Lines == _exp_0 then
         
     | 
| 
       89 
107 
     | 
    
         
             
                      l:flatten(indent and indent .. indent_char or indent_char, buffer)
         
     | 
| 
      
 108 
     | 
    
         
            +
                    else
         
     | 
| 
      
 109 
     | 
    
         
            +
                      error("Unknown item in Lines: " .. tostring(l))
         
     | 
| 
       90 
110 
     | 
    
         
             
                    end
         
     | 
| 
       91 
111 
     | 
    
         
             
                  end
         
     | 
| 
       92 
112 
     | 
    
         
             
                  return buffer
         
     | 
| 
         @@ -97,12 +117,12 @@ do 
     | 
|
| 
       97 
117 
     | 
    
         
             
                    if "table" == type(t) then
         
     | 
| 
       98 
118 
     | 
    
         
             
                      return (function()
         
     | 
| 
       99 
119 
     | 
    
         
             
                        local _accum_0 = { }
         
     | 
| 
       100 
     | 
    
         
            -
                        local _len_0 =  
     | 
| 
      
 120 
     | 
    
         
            +
                        local _len_0 = 1
         
     | 
| 
       101 
121 
     | 
    
         
             
                        local _list_0 = t
         
     | 
| 
       102 
122 
     | 
    
         
             
                        for _index_0 = 1, #_list_0 do
         
     | 
| 
       103 
123 
     | 
    
         
             
                          local v = _list_0[_index_0]
         
     | 
| 
       104 
     | 
    
         
            -
                          _len_0 = _len_0 + 1
         
     | 
| 
       105 
124 
     | 
    
         
             
                          _accum_0[_len_0] = strip(v)
         
     | 
| 
      
 125 
     | 
    
         
            +
                          _len_0 = _len_0 + 1
         
     | 
| 
       106 
126 
     | 
    
         
             
                        end
         
     | 
| 
       107 
127 
     | 
    
         
             
                        return _accum_0
         
     | 
| 
       108 
128 
     | 
    
         
             
                      end)()
         
     | 
| 
         @@ -156,7 +176,7 @@ do 
     | 
|
| 
       156 
176 
     | 
    
         
             
                    end
         
     | 
| 
       157 
177 
     | 
    
         
             
                    local _list_0 = item
         
     | 
| 
       158 
178 
     | 
    
         
             
                    for _index_0 = 1, #_list_0 do
         
     | 
| 
       159 
     | 
    
         
            -
                      value = _list_0[_index_0]
         
     | 
| 
      
 179 
     | 
    
         
            +
                      local value = _list_0[_index_0]
         
     | 
| 
       160 
180 
     | 
    
         
             
                      self:_append_single(value)
         
     | 
| 
       161 
181 
     | 
    
         
             
                    end
         
     | 
| 
       162 
182 
     | 
    
         
             
                  else
         
     | 
| 
         @@ -253,6 +273,47 @@ do 
     | 
|
| 
       253 
273 
     | 
    
         
             
              end
         
     | 
| 
       254 
274 
     | 
    
         
             
              Line = _class_0
         
     | 
| 
       255 
275 
     | 
    
         
             
            end
         
     | 
| 
      
 276 
     | 
    
         
            +
            do
         
     | 
| 
      
 277 
     | 
    
         
            +
              local _parent_0 = nil
         
     | 
| 
      
 278 
     | 
    
         
            +
              local _base_0 = {
         
     | 
| 
      
 279 
     | 
    
         
            +
                prepare = function() end,
         
     | 
| 
      
 280 
     | 
    
         
            +
                render = function(self)
         
     | 
| 
      
 281 
     | 
    
         
            +
                  self:prepare()
         
     | 
| 
      
 282 
     | 
    
         
            +
                  return concat(self)
         
     | 
| 
      
 283 
     | 
    
         
            +
                end
         
     | 
| 
      
 284 
     | 
    
         
            +
              }
         
     | 
| 
      
 285 
     | 
    
         
            +
              _base_0.__index = _base_0
         
     | 
| 
      
 286 
     | 
    
         
            +
              if _parent_0 then
         
     | 
| 
      
 287 
     | 
    
         
            +
                setmetatable(_base_0, _parent_0.__base)
         
     | 
| 
      
 288 
     | 
    
         
            +
              end
         
     | 
| 
      
 289 
     | 
    
         
            +
              local _class_0 = setmetatable({
         
     | 
| 
      
 290 
     | 
    
         
            +
                __init = function(self, fn)
         
     | 
| 
      
 291 
     | 
    
         
            +
                  self.prepare = fn
         
     | 
| 
      
 292 
     | 
    
         
            +
                end,
         
     | 
| 
      
 293 
     | 
    
         
            +
                __base = _base_0,
         
     | 
| 
      
 294 
     | 
    
         
            +
                __name = "DelayedLine",
         
     | 
| 
      
 295 
     | 
    
         
            +
                __parent = _parent_0
         
     | 
| 
      
 296 
     | 
    
         
            +
              }, {
         
     | 
| 
      
 297 
     | 
    
         
            +
                __index = function(cls, name)
         
     | 
| 
      
 298 
     | 
    
         
            +
                  local val = rawget(_base_0, name)
         
     | 
| 
      
 299 
     | 
    
         
            +
                  if val == nil and _parent_0 then
         
     | 
| 
      
 300 
     | 
    
         
            +
                    return _parent_0[name]
         
     | 
| 
      
 301 
     | 
    
         
            +
                  else
         
     | 
| 
      
 302 
     | 
    
         
            +
                    return val
         
     | 
| 
      
 303 
     | 
    
         
            +
                  end
         
     | 
| 
      
 304 
     | 
    
         
            +
                end,
         
     | 
| 
      
 305 
     | 
    
         
            +
                __call = function(cls, ...)
         
     | 
| 
      
 306 
     | 
    
         
            +
                  local _self_0 = setmetatable({}, _base_0)
         
     | 
| 
      
 307 
     | 
    
         
            +
                  cls.__init(_self_0, ...)
         
     | 
| 
      
 308 
     | 
    
         
            +
                  return _self_0
         
     | 
| 
      
 309 
     | 
    
         
            +
                end
         
     | 
| 
      
 310 
     | 
    
         
            +
              })
         
     | 
| 
      
 311 
     | 
    
         
            +
              _base_0.__class = _class_0
         
     | 
| 
      
 312 
     | 
    
         
            +
              if _parent_0 and _parent_0.__inherited then
         
     | 
| 
      
 313 
     | 
    
         
            +
                _parent_0.__inherited(_parent_0, _class_0)
         
     | 
| 
      
 314 
     | 
    
         
            +
              end
         
     | 
| 
      
 315 
     | 
    
         
            +
              DelayedLine = _class_0
         
     | 
| 
      
 316 
     | 
    
         
            +
            end
         
     | 
| 
       256 
317 
     | 
    
         
             
            do
         
     | 
| 
       257 
318 
     | 
    
         
             
              local _parent_0 = nil
         
     | 
| 
       258 
319 
     | 
    
         
             
              local _base_0 = {
         
     | 
| 
         @@ -275,6 +336,9 @@ do 
     | 
|
| 
       275 
336 
     | 
    
         
             
                get = function(self, name)
         
     | 
| 
       276 
337 
     | 
    
         
             
                  return self._state[name]
         
     | 
| 
       277 
338 
     | 
    
         
             
                end,
         
     | 
| 
      
 339 
     | 
    
         
            +
                get_current = function(self, name)
         
     | 
| 
      
 340 
     | 
    
         
            +
                  return rawget(self._state, name)
         
     | 
| 
      
 341 
     | 
    
         
            +
                end,
         
     | 
| 
       278 
342 
     | 
    
         
             
                listen = function(self, name, fn)
         
     | 
| 
       279 
343 
     | 
    
         
             
                  self._listeners[name] = fn
         
     | 
| 
       280 
344 
     | 
    
         
             
                end,
         
     | 
| 
         @@ -292,44 +356,58 @@ do 
     | 
|
| 
       292 
356 
     | 
    
         
             
                declare = function(self, names)
         
     | 
| 
       293 
357 
     | 
    
         
             
                  local undeclared = (function()
         
     | 
| 
       294 
358 
     | 
    
         
             
                    local _accum_0 = { }
         
     | 
| 
       295 
     | 
    
         
            -
                    local _len_0 =  
     | 
| 
      
 359 
     | 
    
         
            +
                    local _len_0 = 1
         
     | 
| 
       296 
360 
     | 
    
         
             
                    local _list_0 = names
         
     | 
| 
       297 
361 
     | 
    
         
             
                    for _index_0 = 1, #_list_0 do
         
     | 
| 
       298 
     | 
    
         
            -
                      local  
     | 
| 
       299 
     | 
    
         
            -
                       
     | 
| 
       300 
     | 
    
         
            -
             
     | 
| 
       301 
     | 
    
         
            -
             
     | 
| 
       302 
     | 
    
         
            -
             
     | 
| 
       303 
     | 
    
         
            -
                         
     | 
| 
       304 
     | 
    
         
            -
                         
     | 
| 
       305 
     | 
    
         
            -
             
     | 
| 
       306 
     | 
    
         
            -
             
     | 
| 
       307 
     | 
    
         
            -
             
     | 
| 
       308 
     | 
    
         
            -
             
     | 
| 
       309 
     | 
    
         
            -
             
     | 
| 
       310 
     | 
    
         
            -
             
     | 
| 
       311 
     | 
    
         
            -
             
     | 
| 
       312 
     | 
    
         
            -
                         
     | 
| 
       313 
     | 
    
         
            -
             
     | 
| 
       314 
     | 
    
         
            -
             
     | 
| 
       315 
     | 
    
         
            -
                         
     | 
| 
      
 362 
     | 
    
         
            +
                      local _continue_0 = false
         
     | 
| 
      
 363 
     | 
    
         
            +
                      repeat
         
     | 
| 
      
 364 
     | 
    
         
            +
                        local name = _list_0[_index_0]
         
     | 
| 
      
 365 
     | 
    
         
            +
                        local is_local = false
         
     | 
| 
      
 366 
     | 
    
         
            +
                        local real_name
         
     | 
| 
      
 367 
     | 
    
         
            +
                        local _exp_0 = mtype(name)
         
     | 
| 
      
 368 
     | 
    
         
            +
                        if LocalName == _exp_0 then
         
     | 
| 
      
 369 
     | 
    
         
            +
                          is_local = true
         
     | 
| 
      
 370 
     | 
    
         
            +
                          real_name = name:get_name(self)
         
     | 
| 
      
 371 
     | 
    
         
            +
                        elseif NameProxy == _exp_0 then
         
     | 
| 
      
 372 
     | 
    
         
            +
                          real_name = name:get_name(self)
         
     | 
| 
      
 373 
     | 
    
         
            +
                        elseif "string" == _exp_0 then
         
     | 
| 
      
 374 
     | 
    
         
            +
                          real_name = name
         
     | 
| 
      
 375 
     | 
    
         
            +
                        end
         
     | 
| 
      
 376 
     | 
    
         
            +
                        if not (is_local or real_name and not self:has_name(real_name, true)) then
         
     | 
| 
      
 377 
     | 
    
         
            +
                          _continue_0 = true
         
     | 
| 
      
 378 
     | 
    
         
            +
                          break
         
     | 
| 
      
 379 
     | 
    
         
            +
                        end
         
     | 
| 
      
 380 
     | 
    
         
            +
                        self:put_name(real_name)
         
     | 
| 
      
 381 
     | 
    
         
            +
                        if self:name_exported(real_name) then
         
     | 
| 
      
 382 
     | 
    
         
            +
                          _continue_0 = true
         
     | 
| 
      
 383 
     | 
    
         
            +
                          break
         
     | 
| 
      
 384 
     | 
    
         
            +
                        end
         
     | 
| 
      
 385 
     | 
    
         
            +
                        local _value_0 = real_name
         
     | 
| 
       316 
386 
     | 
    
         
             
                        _accum_0[_len_0] = _value_0
         
     | 
| 
      
 387 
     | 
    
         
            +
                        _len_0 = _len_0 + 1
         
     | 
| 
      
 388 
     | 
    
         
            +
                        _continue_0 = true
         
     | 
| 
      
 389 
     | 
    
         
            +
                      until true
         
     | 
| 
      
 390 
     | 
    
         
            +
                      if not _continue_0 then
         
     | 
| 
      
 391 
     | 
    
         
            +
                        break
         
     | 
| 
       317 
392 
     | 
    
         
             
                      end
         
     | 
| 
       318 
393 
     | 
    
         
             
                    end
         
     | 
| 
       319 
394 
     | 
    
         
             
                    return _accum_0
         
     | 
| 
       320 
395 
     | 
    
         
             
                  end)()
         
     | 
| 
       321 
     | 
    
         
            -
                  local _list_0 = undeclared
         
     | 
| 
       322 
     | 
    
         
            -
                  for _index_0 = 1, #_list_0 do
         
     | 
| 
       323 
     | 
    
         
            -
                    local name = _list_0[_index_0]
         
     | 
| 
       324 
     | 
    
         
            -
                    self:put_name(name)
         
     | 
| 
       325 
     | 
    
         
            -
                  end
         
     | 
| 
       326 
396 
     | 
    
         
             
                  return undeclared
         
     | 
| 
       327 
397 
     | 
    
         
             
                end,
         
     | 
| 
       328 
398 
     | 
    
         
             
                whitelist_names = function(self, names)
         
     | 
| 
       329 
399 
     | 
    
         
             
                  self._name_whitelist = Set(names)
         
     | 
| 
       330 
400 
     | 
    
         
             
                end,
         
     | 
| 
      
 401 
     | 
    
         
            +
                name_exported = function(self, name)
         
     | 
| 
      
 402 
     | 
    
         
            +
                  if self.export_all then
         
     | 
| 
      
 403 
     | 
    
         
            +
                    return true
         
     | 
| 
      
 404 
     | 
    
         
            +
                  end
         
     | 
| 
      
 405 
     | 
    
         
            +
                  if self.export_proper and name:match("^%u") then
         
     | 
| 
      
 406 
     | 
    
         
            +
                    return true
         
     | 
| 
      
 407 
     | 
    
         
            +
                  end
         
     | 
| 
      
 408 
     | 
    
         
            +
                end,
         
     | 
| 
       331 
409 
     | 
    
         
             
                put_name = function(self, name, ...)
         
     | 
| 
       332 
     | 
    
         
            -
                  value = ...
         
     | 
| 
      
 410 
     | 
    
         
            +
                  local value = ...
         
     | 
| 
       333 
411 
     | 
    
         
             
                  if select("#", ...) == 0 then
         
     | 
| 
       334 
412 
     | 
    
         
             
                    value = true
         
     | 
| 
       335 
413 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -339,13 +417,8 @@ do 
     | 
|
| 
       339 
417 
     | 
    
         
             
                  self._names[name] = value
         
     | 
| 
       340 
418 
     | 
    
         
             
                end,
         
     | 
| 
       341 
419 
     | 
    
         
             
                has_name = function(self, name, skip_exports)
         
     | 
| 
       342 
     | 
    
         
            -
                  if not skip_exports then
         
     | 
| 
       343 
     | 
    
         
            -
                     
     | 
| 
       344 
     | 
    
         
            -
                      return true
         
     | 
| 
       345 
     | 
    
         
            -
                    end
         
     | 
| 
       346 
     | 
    
         
            -
                    if self.export_proper and name:match("^[A-Z]") then
         
     | 
| 
       347 
     | 
    
         
            -
                      return true
         
     | 
| 
       348 
     | 
    
         
            -
                    end
         
     | 
| 
      
 420 
     | 
    
         
            +
                  if not skip_exports and self:name_exported(name) then
         
     | 
| 
      
 421 
     | 
    
         
            +
                    return true
         
     | 
| 
       349 
422 
     | 
    
         
             
                  end
         
     | 
| 
       350 
423 
     | 
    
         
             
                  local yes = self._names[name]
         
     | 
| 
       351 
424 
     | 
    
         
             
                  if yes == nil and self.parent then
         
     | 
| 
         @@ -419,14 +492,14 @@ do 
     | 
|
| 
       419 
492 
     | 
    
         
             
                  end
         
     | 
| 
       420 
493 
     | 
    
         
             
                end,
         
     | 
| 
       421 
494 
     | 
    
         
             
                is_stm = function(self, node)
         
     | 
| 
       422 
     | 
    
         
            -
                  return  
     | 
| 
      
 495 
     | 
    
         
            +
                  return statement_compilers[ntype(node)] ~= nil
         
     | 
| 
       423 
496 
     | 
    
         
             
                end,
         
     | 
| 
       424 
497 
     | 
    
         
             
                is_value = function(self, node)
         
     | 
| 
       425 
498 
     | 
    
         
             
                  local t = ntype(node)
         
     | 
| 
       426 
     | 
    
         
            -
                  return  
     | 
| 
      
 499 
     | 
    
         
            +
                  return value_compilers[t] ~= nil or t == "value"
         
     | 
| 
       427 
500 
     | 
    
         
             
                end,
         
     | 
| 
       428 
     | 
    
         
            -
                name = function(self, node)
         
     | 
| 
       429 
     | 
    
         
            -
                  return self:value(node)
         
     | 
| 
      
 501 
     | 
    
         
            +
                name = function(self, node, ...)
         
     | 
| 
      
 502 
     | 
    
         
            +
                  return self:value(node, ...)
         
     | 
| 
       430 
503 
     | 
    
         
             
                end,
         
     | 
| 
       431 
504 
     | 
    
         
             
                value = function(self, node, ...)
         
     | 
| 
       432 
505 
     | 
    
         
             
                  node = self.transform.value(node)
         
     | 
| 
         @@ -436,7 +509,7 @@ do 
     | 
|
| 
       436 
509 
     | 
    
         
             
                  else
         
     | 
| 
       437 
510 
     | 
    
         
             
                    action = node[1]
         
     | 
| 
       438 
511 
     | 
    
         
             
                  end
         
     | 
| 
       439 
     | 
    
         
            -
                  local fn =  
     | 
| 
      
 512 
     | 
    
         
            +
                  local fn = value_compilers[action]
         
     | 
| 
       440 
513 
     | 
    
         
             
                  if not fn then
         
     | 
| 
       441 
514 
     | 
    
         
             
                    error("Failed to compile value: " .. dump.value(node))
         
     | 
| 
       442 
515 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -459,12 +532,12 @@ do 
     | 
|
| 
       459 
532 
     | 
    
         
             
                    local _with_0 = Line()
         
     | 
| 
       460 
533 
     | 
    
         
             
                    _with_0:append_list((function()
         
     | 
| 
       461 
534 
     | 
    
         
             
                      local _accum_0 = { }
         
     | 
| 
       462 
     | 
    
         
            -
                      local _len_0 =  
     | 
| 
      
 535 
     | 
    
         
            +
                      local _len_0 = 1
         
     | 
| 
       463 
536 
     | 
    
         
             
                      local _list_0 = values
         
     | 
| 
       464 
537 
     | 
    
         
             
                      for _index_0 = 1, #_list_0 do
         
     | 
| 
       465 
538 
     | 
    
         
             
                        local v = _list_0[_index_0]
         
     | 
| 
       466 
     | 
    
         
            -
                        _len_0 = _len_0 + 1
         
     | 
| 
       467 
539 
     | 
    
         
             
                        _accum_0[_len_0] = self:value(v)
         
     | 
| 
      
 540 
     | 
    
         
            +
                        _len_0 = _len_0 + 1
         
     | 
| 
       468 
541 
     | 
    
         
             
                      end
         
     | 
| 
       469 
542 
     | 
    
         
             
                      return _accum_0
         
     | 
| 
       470 
543 
     | 
    
         
             
                    end)(), delim)
         
     | 
| 
         @@ -478,7 +551,7 @@ do 
     | 
|
| 
       478 
551 
     | 
    
         
             
                  node = self.transform.statement(node)
         
     | 
| 
       479 
552 
     | 
    
         
             
                  local result
         
     | 
| 
       480 
553 
     | 
    
         
             
                  do
         
     | 
| 
       481 
     | 
    
         
            -
                    local fn =  
     | 
| 
      
 554 
     | 
    
         
            +
                    local fn = statement_compilers[ntype(node)]
         
     | 
| 
       482 
555 
     | 
    
         
             
                    if fn then
         
     | 
| 
       483 
556 
     | 
    
         
             
                      result = fn(self, node, ...)
         
     | 
| 
       484 
557 
     | 
    
         
             
                    else
         
     | 
| 
         @@ -509,11 +582,18 @@ do 
     | 
|
| 
       509 
582 
     | 
    
         
             
                  if ret then
         
     | 
| 
       510 
583 
     | 
    
         
             
                    error("deprecated stms call, use transformer")
         
     | 
| 
       511 
584 
     | 
    
         
             
                  end
         
     | 
| 
       512 
     | 
    
         
            -
                  local  
     | 
| 
       513 
     | 
    
         
            -
                   
     | 
| 
       514 
     | 
    
         
            -
                    local  
     | 
| 
       515 
     | 
    
         
            -
                     
     | 
| 
      
 585 
     | 
    
         
            +
                  local current_stms, current_stm_i
         
     | 
| 
      
 586 
     | 
    
         
            +
                  do
         
     | 
| 
      
 587 
     | 
    
         
            +
                    local _obj_0 = self
         
     | 
| 
      
 588 
     | 
    
         
            +
                    current_stms, current_stm_i = _obj_0.current_stms, _obj_0.current_stm_i
         
     | 
| 
       516 
589 
     | 
    
         
             
                  end
         
     | 
| 
      
 590 
     | 
    
         
            +
                  self.current_stms = stms
         
     | 
| 
      
 591 
     | 
    
         
            +
                  for i = 1, #stms do
         
     | 
| 
      
 592 
     | 
    
         
            +
                    self.current_stm_i = i
         
     | 
| 
      
 593 
     | 
    
         
            +
                    self:stm(stms[i])
         
     | 
| 
      
 594 
     | 
    
         
            +
                  end
         
     | 
| 
      
 595 
     | 
    
         
            +
                  self.current_stms = current_stms
         
     | 
| 
      
 596 
     | 
    
         
            +
                  self.current_stm_i = current_stm_i
         
     | 
| 
       517 
597 
     | 
    
         
             
                  return nil
         
     | 
| 
       518 
598 
     | 
    
         
             
                end,
         
     | 
| 
       519 
599 
     | 
    
         
             
                splice = function(self, fn)
         
     | 
| 
         @@ -590,11 +670,7 @@ do 
     | 
|
| 
       590 
670 
     | 
    
         
             
                  if not (self.options.implicitly_return_root == false) then
         
     | 
| 
       591 
671 
     | 
    
         
             
                    stms = transform.Statement.transformers.root_stms(self, stms)
         
     | 
| 
       592 
672 
     | 
    
         
             
                  end
         
     | 
| 
       593 
     | 
    
         
            -
                   
     | 
| 
       594 
     | 
    
         
            -
                  for _index_0 = 1, #_list_0 do
         
     | 
| 
       595 
     | 
    
         
            -
                    local s = _list_0[_index_0]
         
     | 
| 
       596 
     | 
    
         
            -
                    self:stm(s)
         
     | 
| 
       597 
     | 
    
         
            -
                  end
         
     | 
| 
      
 673 
     | 
    
         
            +
                  return self:stms(stms)
         
     | 
| 
       598 
674 
     | 
    
         
             
                end,
         
     | 
| 
       599 
675 
     | 
    
         
             
                render = function(self)
         
     | 
| 
       600 
676 
     | 
    
         
             
                  local buffer = self._lines:flatten()
         
     | 
| 
         @@ -638,6 +714,7 @@ do 
     | 
|
| 
       638 
714 
     | 
    
         
             
              end
         
     | 
| 
       639 
715 
     | 
    
         
             
              RootBlock = _class_0
         
     | 
| 
       640 
716 
     | 
    
         
             
            end
         
     | 
| 
      
 717 
     | 
    
         
            +
            local format_error
         
     | 
| 
       641 
718 
     | 
    
         
             
            format_error = function(msg, pos, file_str)
         
     | 
| 
       642 
719 
     | 
    
         
             
              local line = pos_to_line(file_str, pos)
         
     | 
| 
       643 
720 
     | 
    
         
             
              local line_str
         
     | 
| 
         @@ -648,6 +725,7 @@ format_error = function(msg, pos, file_str) 
     | 
|
| 
       648 
725 
     | 
    
         
             
                (" [%d] >>    %s"):format(line, trim(line_str))
         
     | 
| 
       649 
726 
     | 
    
         
             
              }, "\n")
         
     | 
| 
       650 
727 
     | 
    
         
             
            end
         
     | 
| 
      
 728 
     | 
    
         
            +
            local value
         
     | 
| 
       651 
729 
     | 
    
         
             
            value = function(value)
         
     | 
| 
       652 
730 
     | 
    
         
             
              local out = nil
         
     | 
| 
       653 
731 
     | 
    
         
             
              do
         
     | 
| 
         @@ -657,6 +735,7 @@ value = function(value) 
     | 
|
| 
       657 
735 
     | 
    
         
             
              end
         
     | 
| 
       658 
736 
     | 
    
         
             
              return out
         
     | 
| 
       659 
737 
     | 
    
         
             
            end
         
     | 
| 
      
 738 
     | 
    
         
            +
            local tree
         
     | 
| 
       660 
739 
     | 
    
         
             
            tree = function(tree, options)
         
     | 
| 
       661 
740 
     | 
    
         
             
              if options == nil then
         
     | 
| 
       662 
741 
     | 
    
         
             
                options = { }
         
     | 
| 
         @@ -689,3 +768,21 @@ tree = function(tree, options) 
     | 
|
| 
       689 
768 
     | 
    
         
             
                return lua_code, posmap
         
     | 
| 
       690 
769 
     | 
    
         
             
              end
         
     | 
| 
       691 
770 
     | 
    
         
             
            end
         
     | 
| 
      
 771 
     | 
    
         
            +
            do
         
     | 
| 
      
 772 
     | 
    
         
            +
              local _with_0 = require("moonscript.data")
         
     | 
| 
      
 773 
     | 
    
         
            +
              local data = _with_0
         
     | 
| 
      
 774 
     | 
    
         
            +
              for name, cls in pairs({
         
     | 
| 
      
 775 
     | 
    
         
            +
                Line = Line,
         
     | 
| 
      
 776 
     | 
    
         
            +
                Lines = Lines,
         
     | 
| 
      
 777 
     | 
    
         
            +
                DelayedLine = DelayedLine
         
     | 
| 
      
 778 
     | 
    
         
            +
              }) do
         
     | 
| 
      
 779 
     | 
    
         
            +
                data[name] = cls
         
     | 
| 
      
 780 
     | 
    
         
            +
              end
         
     | 
| 
      
 781 
     | 
    
         
            +
            end
         
     | 
| 
      
 782 
     | 
    
         
            +
            return {
         
     | 
| 
      
 783 
     | 
    
         
            +
              tree = tree,
         
     | 
| 
      
 784 
     | 
    
         
            +
              value = value,
         
     | 
| 
      
 785 
     | 
    
         
            +
              format_error = format_error,
         
     | 
| 
      
 786 
     | 
    
         
            +
              Block = Block,
         
     | 
| 
      
 787 
     | 
    
         
            +
              RootBlock = RootBlock
         
     | 
| 
      
 788 
     | 
    
         
            +
            }
         
     |