Class: Fr::SZipper::EditedCursor
Instance Attribute Summary collapse
Instance Method Summary
collapse
#empty?, #head, #next, #position, #tail, #truncate
Methods included from Enumerable
#all?, #any?, #chunk, #collect, #collect_concat, #count, #cycle, #detect, #drop, #drop_while, #each, #entries, #filter, #filter_, #first, #flat_map, #foldl, #grep, #group_by, #include?, #index, #max, #max_by, #min, #min_by, #minmax, #minmax_by, #none?, #partition, #reduce, #reject, #sort, #take, #take_while, #zip
Constructor Details
#initialize(node, prev) ⇒ EditedCursor
Returns a new instance of EditedCursor.
7
8
9
10
|
# File 'lib/fr/szipper/edited_cursor.rb', line 7
def initialize(node, prev)
@node, @prev =
node, prev
end
|
Instance Attribute Details
Returns the value of attribute node.
5
6
7
|
# File 'lib/fr/szipper/edited_cursor.rb', line 5
def node
@node
end
|
Instance Method Details
#append(node) ⇒ Object
28
29
30
|
# File 'lib/fr/szipper/edited_cursor.rb', line 28
def append(node)
EditedCursor.new(node.copy(next: @node.next), self)
end
|
48
49
50
51
52
53
54
|
# File 'lib/fr/szipper/edited_cursor.rb', line 48
def delete
if @prev.head?
HeadCursor.new(prev.node.copy(next: @node.next))
else
EditedCursor.new(prev.node.copy(next: @node.next), @prev.prev)
end
end
|
#head? ⇒ Boolean
12
13
14
|
# File 'lib/fr/szipper/edited_cursor.rb', line 12
def head?
false
end
|
56
57
58
|
# File 'lib/fr/szipper/edited_cursor.rb', line 56
def inspect
"Cursor([..., #{@node.inspect}, ...])"
end
|
#prepend(node) ⇒ Object
32
33
34
|
# File 'lib/fr/szipper/edited_cursor.rb', line 32
def prepend(node)
EditedCursor.new(node.copy(next: @node), prev)
end
|
#prev(phantom = false) ⇒ Object
20
21
22
23
24
25
26
|
# File 'lib/fr/szipper/edited_cursor.rb', line 20
def prev(phantom = false)
if @prev.head?
HeadCursor.new(@prev.node.copy(next: @node))
else
EditedCursor.new(@prev.node.copy(next: @node), @prev.prev)
end
end
|
#replace(node) ⇒ Object
44
45
46
|
# File 'lib/fr/szipper/edited_cursor.rb', line 44
def replace(node)
EditCursor.new(node, @prev)
end
|
#tail? ⇒ Boolean
16
17
18
|
# File 'lib/fr/szipper/edited_cursor.rb', line 16
def tail?
@node.tail?
end
|
#update(node = nil) ⇒ Object
36
37
38
39
40
41
42
|
# File 'lib/fr/szipper/edited_cursor.rb', line 36
def update(node = nil)
if node.nil?
EditedCursor.new(yield(@node).copy(next: @node.next), @prev)
else
EditedCursor.new(node.copy(next: @node.next), @prev)
end
end
|