# Formatting # ---------- # TODO: maybe this file should be split up into their respective sections: # operators -> operators # array literals -> array literals # string literals -> string literals # function invocations -> function invocations # * Line Continuation # * Property Accesss # * Operators # * Array Literals # * Function Invocations # * String Literals doesNotThrow -> CoffeeScript.compile "a = then b" test "multiple semicolon-separated statements in parentheticals", -> nonce = {} eq nonce, (1; 2; nonce) eq nonce, (-> return (1; 2; nonce))() #### Line Continuation # Property Access test "chained accesses split on period/newline, backwards and forwards", -> str = 'abc' result = str. split(''). reverse(). reverse(). reverse() arrayEq ['c','b','a'], result arrayEq ['c','b','a'], str. split(''). reverse(). reverse(). reverse() result = str .split('') .reverse() .reverse() .reverse() arrayEq ['c','b','a'], result arrayEq ['c','b','a'], str .split('') .reverse() .reverse() .reverse() arrayEq ['c','b','a'], str. split('') .reverse(). reverse() .reverse() # Operators test "newline suppression for operators", -> six = 1 + 2 + 3 eq 6, six test "`?.` and `::` should continue lines", -> ok not Date :: ?.foo #eq Object::toString, Date?. #prototype #:: #?.foo # Array Literals test "indented array literals don't trigger whitespace rewriting", -> getArgs = -> arguments result = getArgs( [[[[[], []], [[]]]], []]) eq 1, result.length # Function Invocations doesNotThrow -> CoffeeScript.compile """ obj = then fn 1, 1: 1 a: b: -> fn c, d: e f: 1 """ # String Literals test "indented heredoc", -> result = ((_) -> _)( """ abc """) eq "abc", result