aboutsummaryrefslogtreecommitdiff
path: root/lua_obj.moon
diff options
context:
space:
mode:
authorBruce Hill <bitbucket@bruce-hill.com>2018-04-12 20:39:17 -0700
committerBruce Hill <bitbucket@bruce-hill.com>2018-04-12 20:39:22 -0700
commitb05a46c78ca40e6838ee49121fdc5d02823ed44b (patch)
treed5aa898612ad090d545d517cb856391c5ba21deb /lua_obj.moon
parent1de29826a82cc858cf6d9df9ead86655304251a4 (diff)
Incremental progress.
Diffstat (limited to 'lua_obj.moon')
-rw-r--r--lua_obj.moon22
1 files changed, 18 insertions, 4 deletions
diff --git a/lua_obj.moon b/lua_obj.moon
index ef5dc7e..6cc3e00 100644
--- a/lua_obj.moon
+++ b/lua_obj.moon
@@ -5,7 +5,12 @@ export LINE_STARTS
Location = immutable {"text_name","text","start","stop"}, {
name:"Location"
- __new: (text_name, text, start, stop)=> text_name, text, start, stop or start
+ __new: (text_name, text, start, stop)=>
+ assert(type(text_name) == 'string')
+ assert(type(text) == 'string')
+ assert(type(start) == 'number')
+ assert(type(stop or start) == 'number')
+ return text_name, text, start, stop or start
__tostring: => "#{@text_name}[#{@start}:#{@stop}]"
__lt: (other)=>
assert(@text == other.text, "Cannot compare sources from different texts")
@@ -28,9 +33,9 @@ Location = immutable {"text_name","text","start","stop"}, {
while (line_starts[stop_line+1] or (#src+1)) <= @stop
stop_line += 1
return start_line, stop_line
- get_line: => "#{@text_name}:#{@get_line_number}"
+ get_line: => "#{@text_name}:#{@get_line_number!}"
get_line_range: =>
- start_line, stop_line = @get_line_number
+ start_line, stop_line = @get_line_number!
return if stop_line == start_line
"#{text_name}:#{start_line}"
else "#{text_name}:#{start_line}-#{stop_line}"
@@ -41,6 +46,9 @@ class Lua
is_value: false
new: (@source, ...)=>
+ for i=1,select("#",...)
+ x = select(i,...)
+ assert(type(x) != 'table' or getmetatable(x))
@bits = {...}
@free_vars = {}
@@ -81,14 +89,20 @@ class Lua
n = select("#",...)
bits = @bits
for i=1,n
+ x = select(i,...)
+ assert(type(x) != 'table' or getmetatable(x))
bits[#bits+1] = select(i, ...)
prepend: (...)=>
n = select("#",...)
bits = @bits
for i=#bits+n,n+1,-1
+ x = select(i,...)
+ assert(type(x) != 'table' or getmetatable(x))
bits[i] = bits[i-n]
for i=1,n
+ x = select(i,...)
+ assert(type(x) != 'table' or getmetatable(x))
bits[i] = select(i, ...)
make_offset_table: (lua_chunkname)=>
@@ -132,7 +146,7 @@ class LuaValue extends Lua
as_statements: =>
bits = {unpack @bits}
bits[#bits+1] = ";"
- return Lua(@source, bits)
+ return Lua(@source, unpack(bits))
parenthesize: =>
@prepend "("