jashkenas--coffeescript/test/test_blocks.coffee

69 lines
872 B
CoffeeScript

# Basic blocks.
results = [1, 2, 3].map (x) ->
x * x
ok results.join(' ') is '1 4 9'
# Chained blocks, with proper indentation levels:
results = []
counter =
tick: (func) ->
results.push func()
this
counter
.tick ->
3
.tick ->
2
.tick ->
1
ok results.join(' ') is '3 2 1'
# Make incorrect indentation safe.
func = ->
obj = {
key: 10
}
obj.key - 5
ok func() is 5
# Ensure that chained calls with indented implicit object literals below are
# alright.
result = null
obj =
method: (val) -> this
second: (hash) -> result = hash.three
obj
.method(
101
).second(
one:
two: 2
three: 3
)
ok result is 3
# Test newline-supressed call chains with nested functions.
obj =
call: -> this
func = ->
obj
.call ->
one two
.call ->
three four
101
ok func() is 101