class TwitterCldr::Tokenizers::PatternTokenizer

Attributes

data_reader[R]
tokenizer[R]

Public Class Methods

new(data_reader, tokenizer) click to toggle source
# File lib/twitter_cldr/tokenizers/pattern_tokenizer.rb, line 12
def initialize(data_reader, tokenizer)
  @data_reader = data_reader
  @tokenizer = tokenizer
end

Public Instance Methods

tokenize(pattern) click to toggle source
# File lib/twitter_cldr/tokenizers/pattern_tokenizer.rb, line 17
def tokenize(pattern)
  tokenizer.tokenize(expand(pattern))
end

Private Instance Methods

expand(pattern) click to toggle source
# File lib/twitter_cldr/tokenizers/pattern_tokenizer.rb, line 23
def expand(pattern)
  if pattern.is_a?(Symbol)
    # symbols mean another path was given
    path = pattern.to_s.split(".").map(&:to_sym)
    data = data_reader.pattern_at_path(path)
    next_pattern = data.is_a?(Hash) ? data[:pattern] : data
    expand_pattern(next_pattern)
  elsif pattern.is_a?(Hash)
    pattern.inject({}) do |ret, (key, val)|
      ret[key] = expand(val)
      ret
    end
  else
    pattern
  end
end