1
0
Fork 0
mirror of https://github.com/jashkenas/coffeescript.git synced 2022-11-09 12:23:24 -05:00

still some kinks to work out -- mid-expression blocks

This commit is contained in:
Jeremy Ashkenas 2009-12-29 09:18:41 -05:00
parent 3fbb870d01
commit f44443b58a
2 changed files with 9 additions and 7 deletions

View file

@ -139,11 +139,11 @@ module CoffeeScript
return newline_token(indent) if size == @indent
if size > @indent
token(:INDENT, size - @indent)
@indents << size - @indent
@indent = size
@indents << (size - @indent)
else
outdent_token(@indent - size)
end
@indent = size
@line += 1
@i += (size + 1)
end
@ -154,6 +154,8 @@ module CoffeeScript
token(:OUTDENT, last_indent)
move_out -= last_indent
end
# TODO: Figure out what to do about blocks that close, ending the expression
# versus blocks that occur mid-expression.
# token("\n", "\n")
@indent = @indents.last || 0
end
@ -245,7 +247,7 @@ module CoffeeScript
# To that end, remove redundant outdent/indents from the token stream.
def remove_empty_outdents
scan_tokens do |prev, token, post, i|
if prev[0] == :OUTDENT && token[1] == "\n" && post[0] == :INDENT && prev[1] == post[1]
if prev && post && prev[0] == :OUTDENT && token[1] == "\n" && post[0] == :INDENT && prev[1] == post[1]
@tokens.delete_at(i + 1)
@tokens.delete_at(i - 1)
end

View file

@ -6,9 +6,9 @@ _.each: obj, iterator, context =>
if obj.forEach
obj.forEach(iterator, context)
else if _.isArray(obj) or _.isArguments(obj)
iterator.call(context, item, i, obj) for item, i in obj.
iterator.call(context, item, i, obj) for item, i in obj
else
iterator.call(context, obj[key], key, obj) for key in _.keys(obj)..
iterator.call(context, obj[key], key, obj) for key in _.keys(obj)
catch e
throw e if e isnt breaker.
obj.
throw e if e isnt breaker
obj