class Opal::Nodes::ArrayNode
def compile
def compile return push('[]') if children.empty? code, work = [], [] children.each do |child| splat = child.type == :splat part = expr(child) if splat if work.empty? if code.empty? code << fragment("[].concat(") << part << fragment(")") else code << fragment(".concat(") << part << fragment(")") end else if code.empty? code << fragment("[") << work << fragment("]") else code << fragment(".concat([") << work << fragment("])") end code << fragment(".concat(") << part << fragment(")") end work = [] else work << fragment(", ") unless work.empty? work << part end end unless work.empty? join = [fragment("["), work, fragment("]")] if code.empty? code = join else code.push([fragment(".concat("), join, fragment(")")]) end end push code end