Method: Packcr::Node::SequenceNode#seq

Defined in:
lib/packcr/node/sequence_node.rb

#seq(node, cut: false) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/packcr/node/sequence_node.rb', line 16

def seq(node, cut: false)
  if node&.sequence?
    node.nodes.each do |child|
      seq(child, cut: cut)
      cut = false
    end
    return self
  end

  if cut
    if node
      node = Packcr::Node::SequenceNode.new(node, cut: true)
    else
      node = Packcr::Node::SequenceNode.new(cut: true)
    end
  end
  if node
    if @nodes.last.sequence?
      @nodes.last.seq(node)
    else
      @nodes << node
    end
  end
  self
end