class TwitterCldr::Collation::TrieWithFallback
Trie that delegates all not found keys to the fallback.
Note: methods get
and find_prefix
have a bit different behavior. The first one, get
, delegates to the fallback any key that was not found. On the other hand, find_refix delegates the key only if none of its prefixes was found.
E.g., if the fallback contains key [1, 2] with value '12' and the trie itself contains only key [1] with value '1' results will be the following:
trie.get([1, 2]) #=> '12' - key [1, 2] wasn't found in the trie, so it was delegated to the fallback where the value '12' was found. trie.find_prefix([1, 2]) #=> ['1', 1, suffixes] - key [1, 2] is not present in the trie, but its prefix [1] was found, so the fallback wasn't used. trie.find_prefix([3, 2]) - the trie itself includes neither key [3, 2] nor its prefix [3], so this call is delegated to the fallback.
This special behavior of the find_prefix
method allows 'hiding' fallback keys that contain more than one element by adding their one element prefixes to the trie itself. This feature is useful for some applications, e.g., for suppressing contractions in a tailored fractional collation elements trie.
Attributes
fallback[RW]
Public Class Methods
new(fallback)
click to toggle source
Calls superclass method
TwitterCldr::Utils::Trie::new
# File lib/twitter_cldr/collation/trie_with_fallback.rb, line 35 def initialize(fallback) super() self.fallback = fallback end
Public Instance Methods
find_prefix(key)
click to toggle source
Calls superclass method
TwitterCldr::Utils::Trie#find_prefix
# File lib/twitter_cldr/collation/trie_with_fallback.rb, line 44 def find_prefix(key) value, prefix_size, suffixes = super if prefix_size > 0 [value, prefix_size, suffixes] else fallback.find_prefix(key) end end
get(key)
click to toggle source
Calls superclass method
TwitterCldr::Utils::Trie#get
# File lib/twitter_cldr/collation/trie_with_fallback.rb, line 40 def get(key) super || fallback.get(key) end