Class: Stupidedi::Zipper::Hole
- Inherits:
-
AbstractPath
- Object
- AbstractPath
- Stupidedi::Zipper::Hole
- Defined in:
- lib/stupidedi/zipper/path.rb
Instance Attribute Summary collapse
-
#left ⇒ Array<#leaf?, #children, #copy>
readonly
Contains the node’s rightward siblings, sorted nearest to furthest.
- #parent ⇒ AbstractPath readonly
-
#right ⇒ Array<#leaf?, #children, #copy>
readonly
Contains the node’s leftward siblings, sorted nearest to furthest.
Instance Method Summary collapse
- #==(other) ⇒ Boolean
-
#depth ⇒ Integer
Distance from the root node.
- #first? ⇒ Boolean
-
#initialize(left, parent, right) ⇒ Hole
constructor
A new instance of Hole.
- #inspect ⇒ String
- #last? ⇒ Boolean
- #position ⇒ Object
Constructor Details
#initialize(left, parent, right) ⇒ Hole
Returns a new instance of Hole.
91 92 93 94 |
# File 'lib/stupidedi/zipper/path.rb', line 91 def initialize(left, parent, right) @left, @parent, @right = left, parent, right end |
Instance Attribute Details
#left ⇒ Array<#leaf?, #children, #copy> (readonly)
Contains the node’s rightward siblings, sorted nearest to furthest
83 84 85 |
# File 'lib/stupidedi/zipper/path.rb', line 83 def left @left end |
#parent ⇒ AbstractPath (readonly)
86 87 88 |
# File 'lib/stupidedi/zipper/path.rb', line 86 def parent @parent end |
#right ⇒ Array<#leaf?, #children, #copy> (readonly)
Contains the node’s leftward siblings, sorted nearest to furthest
89 90 91 |
# File 'lib/stupidedi/zipper/path.rb', line 89 def right @right end |
Instance Method Details
#==(other) ⇒ Boolean
121 122 123 124 |
# File 'lib/stupidedi/zipper/path.rb', line 121 def ==(other) depth == other.depth and position == other.position end |
#depth ⇒ Integer
Distance from the root node
107 108 109 |
# File 'lib/stupidedi/zipper/path.rb', line 107 def depth 1 + @parent.depth end |
#first? ⇒ Boolean
102 103 104 |
# File 'lib/stupidedi/zipper/path.rb', line 102 def first? @left.empty? end |
#inspect ⇒ String
116 117 118 |
# File 'lib/stupidedi/zipper/path.rb', line 116 def inspect "#{@parent.inspect}/#{@left.length}" end |
#last? ⇒ Boolean
97 98 99 |
# File 'lib/stupidedi/zipper/path.rb', line 97 def last? @right.empty? end |
#position ⇒ Object
111 112 113 |
# File 'lib/stupidedi/zipper/path.rb', line 111 def position @left.length end |