Class: Stupidedi::Builder::FailureState

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

Instance Attribute Summary collapse

Constructors collapse

Instance Method Summary collapse

Methods inherited from AbstractState

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

Methods included from Inspect

#inspect

Constructor Details

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

Returns a new instance of FailureState.



21
22
23
24
# File 'lib/stupidedi/builder/states/failure_state.rb', line 21

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<FailureState> (readonly)

Returns:



19
20
21
# File 'lib/stupidedi/builder/states/failure_state.rb', line 19

def children
  @children
end

#instructionsInstructionTable (readonly)

Returns:



16
17
18
# File 'lib/stupidedi/builder/states/failure_state.rb', line 16

def instructions
  @instructions
end

#segment_dictReader::SegmentDict (readonly)

Returns:



10
11
12
# File 'lib/stupidedi/builder/states/failure_state.rb', line 10

def segment_dict
  @segment_dict
end

#separatorsReader::Separators (readonly)

Returns:



7
8
9
# File 'lib/stupidedi/builder/states/failure_state.rb', line 7

def separators
  @separators
end

#zipperZipper::AbstractCursor (readonly)



13
14
15
# File 'lib/stupidedi/builder/states/failure_state.rb', line 13

def zipper
  @zipper
end

Class Method Details

.mksegment(segment_tok, parent) ⇒ Object



53
54
55
56
57
58
59
60
61
62
# File 'lib/stupidedi/builder/states/failure_state.rb', line 53

def mksegment(segment_tok, parent)
  segment_val = Values::InvalidSegmentVal.new \
    "unexpected segment", segment_tok

  new(parent.separators,
      parent.segment_dict,
      parent.instructions,
      parent.zipper.append(segment_val),
      [])
end

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



41
42
43
44
45
46
47
48
49
50
51
# File 'lib/stupidedi/builder/states/failure_state.rb', line 41

def push(zipper, parent, segment_tok, reason)
  envelope_val = Values::InvalidEnvelopeVal.new([])
  segment_val  = Values::InvalidSegmentVal.new(reason, segment_tok)

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

Instance Method Details

#copy(changes = {}) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/stupidedi/builder/states/failure_state.rb', line 26

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