class Opal::Nodes::BeginNode
def compile
def compile return push 'nil' if children.empty? if stmt? compile_children(children, @level) elsif simple_children? compile_inline_children(children, @level) wrap '(', ')' if children.size > 1 elsif children.size == 1 compile_inline_children(returned_children, @level) else in_closure do compile_children(returned_children, @level) end if scope.parent&.await_encountered wrap '(await (async function() {', '})())' else wrap '(function() {', '})()' end end end
def compile_children(children, level)
def compile_children(children, level) children.each do |child| line process(child, level), fragment(';', loc: false) end end
def compile_inline_children(children, level)
def compile_inline_children(children, level) processed_children = children.map do |child| process(child, level) end processed_children.reject(&:empty?).each_with_index do |child, idx| push fragment(', ', loc: false) unless idx == 0 push child end end
def returned_children
def returned_children @returned_children ||= begin *rest, last_child = *children if last_child rest + [compiler.returns(last_child)] else [s(:nil)] end end end
def simple_children?
def simple_children? children.none? do |child| COMPLEX_CHILDREN.include?(child.type) end end