Class: Stupidedi::Builder::LoopState

Inherits:
AbstractState show all
Defined in:
lib/stupidedi/builder/states/loop_state.rb

Instance Attribute Summary collapse

Constructors collapse

Instance Method Summary collapse

Methods inherited from AbstractState

#leaf?, lsequence, mkcomposite, mkelement, mkrepeated, mksegment, mksimple, #pretty_print, sequence, tsequence

Methods included from Inspect

#inspect

Constructor Details

#initialize(separators, segment_dict, instructions, zipper, children) ⇒ LoopState

Returns a new instance of LoopState


25
26
27
28
# File 'lib/stupidedi/builder/states/loop_state.rb', line 25

def initialize(separators, segment_dict, instructions, zipper, children)
  @separators, @segment_dict, @instructions, @zipper, @children =
    separators, segment_dict, instructions, zipper, children
end

Instance Attribute Details

#childrenArray<AbstractState> (readonly)

Returns:


23
24
25
# File 'lib/stupidedi/builder/states/loop_state.rb', line 23

def children
  @children
end

#instructionsInstructionTable (readonly)

Returns:


17
18
19
# File 'lib/stupidedi/builder/states/loop_state.rb', line 17

def instructions
  @instructions
end

#segment_dictReader::SegmentDict (readonly)

Returns:


14
15
16
# File 'lib/stupidedi/builder/states/loop_state.rb', line 14

def segment_dict
  @segment_dict
end

#separatorsReader::Separators (readonly)

Returns:


11
12
13
# File 'lib/stupidedi/builder/states/loop_state.rb', line 11

def separators
  @separators
end

#zipperZipper::AbstractCursor (readonly)


20
21
22
# File 'lib/stupidedi/builder/states/loop_state.rb', line 20

def zipper
  @zipper
end

Class Method Details

.push(zipper, parent, segment_tok, segment_use, config) ⇒ Zipper::AbstractCursor


46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/stupidedi/builder/states/loop_state.rb', line 46

def push(zipper, parent, segment_tok, segment_use, config)
  loop_def    = segment_use.parent
  loop_val    = loop_def.empty
  segment_val = mksegment(segment_tok, segment_use)

  zipper.append_child new(
    parent.separators,
    parent.segment_dict,
    parent.instructions.push(instructions(loop_def)),
    parent.zipper.append(loop_val).append_child(segment_val),
    [])
end

Instance Method Details

#copy(changes = {}) ⇒ LoopState

Returns:


31
32
33
34
35
36
37
38
# File 'lib/stupidedi/builder/states/loop_state.rb', line 31

def copy(changes = {})
  LoopState.new \
    changes.fetch(:separators, @separators),
    changes.fetch(:segment_dict, @segment_dict),
    changes.fetch(:instructions, @instructions),
    changes.fetch(:zipper, @zipper),
    changes.fetch(:children, @children)
end