lib/rambling-trie/compressor.rb in rambling-trie-0.4.0 vs lib/rambling-trie/compressor.rb in rambling-trie-0.4.1
- old
+ new
@@ -6,44 +6,42 @@
# @return [Boolean] `true` for compressed tries, `false` otherwise.
def compressed?
@parent.nil? ? false : @parent.compressed?
end
- protected
-
- def compress_own_tree!
+ def compress_tree!
if @children.size == 1 and not terminal? and not @letter.nil?
- merge_with!(@children.values.first)
- compress_own_tree!
+ merge_with! @children.values.first
+ compress_tree!
end
- @children.values.each { |node| node.compress_own_tree! }
+ @children.values.each &:compress_tree!
self
end
private
def merge_with!(child)
new_letter = (@letter.to_s + child.letter.to_s).to_sym
- rehash_on_parent!(@letter, new_letter)
- redefine_self!(new_letter, child)
+ rehash_on_parent! @letter, new_letter
+ redefine_self! new_letter, child
@children.values.each { |node| node.parent = self }
end
def rehash_on_parent!(old_letter, new_letter)
return if @parent.nil?
- @parent.delete(old_letter)
+ @parent.delete old_letter
@parent[new_letter] = self
end
def redefine_self!(new_letter, merged_node)
@letter = new_letter
@children = merged_node.children
- @is_terminal = merged_node.terminal?
+ @terminal = merged_node.terminal?
end
end
end
end