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