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