Sha256: 6f818cc22477aa32af6d8559f91343aaca902ca273385bbffa89c0e2524edf82
Contents?: true
Size: 1.28 KB
Versions: 7
Compression:
Stored size: 1.28 KB
Contents
# frozen_string_literal: true require 'opal/nodes/base' module Opal module Nodes class ArrayNode < Base handle :array 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 end end end
Version data entries
7 entries across 7 versions & 1 rubygems