public
Description: A Ruby-based parsing DSL based on parsing expression grammars.
Homepage: http://treetop.rubyforge.org
Clone URL: git://github.com/nathansobo/treetop.git
A bit of refactoring
Nathan Sobo (author)
Fri Jan 25 16:17:44 -0800 2008
commit  1169099ff175559ecdea213cb2b285c502e11f2c
tree    0cc81c190f6ddb0bff8129590ac1b5c827a70349
parent  051118153283b28d33b3c39d6a950f49cc5d91f0
...
14
15
16
17
18
19
20
21
22
23
24
25
 
 
26
27
28
29
30
31
 
32
33
34
...
14
15
16
 
 
 
 
 
 
 
 
 
17
18
19
20
21
22
 
23
24
25
26
27
0
@@ -14,21 +14,14 @@ class IntervalSkipList
0
 
0
   def expire(range, length_change)
0
     expired_markers, first_node_after_range = overlapping(range)
0
- expired_markers.each do |marker|
0
- delete(marker)
0
- end
0
-
0
- cur_node = first_node_after_range
0
- while cur_node do
0
- cur_node.key += length_change if cur_node.key >= range.last
0
- cur_node = cur_node.forward[0]
0
- end
0
+ expired_markers.each { |marker| delete(marker) }
0
+ first_node_after_range.propagate_length_change(length_change)
0
   end
0
 
0
   def overlapping(range)
0
     markers, first_node = containing_with_node(range.first)
0
- cur_node = first_node
0
 
0
+ cur_node = first_node
0
     begin
0
       markers.concat(cur_node.forward_markers.flatten)
0
       cur_node = cur_node.forward[0]
...
23
24
25
 
 
 
 
 
 
 
 
26
27
28
...
23
24
25
26
27
28
29
30
31
32
33
34
35
36
0
@@ -23,6 +23,14 @@ class IntervalSkipList
0
       demote_markers(path)
0
     end
0
 
0
+ def propagate_length_change(length_change)
0
+ cur_node = self
0
+ while cur_node do
0
+ cur_node.key += length_change
0
+ cur_node = cur_node.forward[0]
0
+ end
0
+ end
0
+
0
     protected
0
 
0
     def update_forward_pointers(path)

Comments

    No one has commented yet.