class Translator::LanguageBundle

Attributes

months[R]
separator_regexp[R]
types_map[R]
types_range[R]
values[R]
values_map[R]

Public Class Methods

fetch(lang) click to toggle source
# File lib/natural-date/language_bundle.rb, line 18
def self.fetch lang
  BUNDLES[lang] ||= LanguageBundle.new(lang)
end
new(lang) click to toggle source
# File lib/natural-date/language_bundle.rb, line 7
def initialize lang
  @lang = lang.freeze

  @types_range = { week_day: 0..6, month: 1..12 }.freeze
  @types_map = load_types_map.freeze
  @values = load_values.freeze
  @months = load_months.freeze
  @values_map = @values.map { |key, value| value.split(' ').map { |v| { v => key } } }.flatten.reduce({}) { |e, map| map.merge(e) }.freeze
  @separator_regexp = Regexp.new(@types_map.select { |_k, v| v == :separator }.keys.map { |k| " #{k} " }.join '|').freeze
end

Private Instance Methods

load_months() click to toggle source
# File lib/natural-date/language_bundle.rb, line 51
def load_months
  yaml['keys']['month'].values.map { |m| m.split.first }
end
load_types_map() click to toggle source
# File lib/natural-date/language_bundle.rb, line 31
def load_types_map
  yaml['keys']
  .map{ |k, v| { k => v.values.join(' ') } }
  .reduce({}){ |map, element| map.merge(element) }
  .map { |k, v| v.split(' ').map { |v| { v => k.to_sym } } }
  .flatten
  .reduce({}) { |e, map| map.merge(e) }
end
load_values() click to toggle source
# File lib/natural-date/language_bundle.rb, line 40
def load_values
  yaml['keys']
  .values
  .reduce({}) { |map, element| map.merge(symbolize_keys(element)) }
  .reject { |k, v| k == :value }
end
symbolize_keys(m) click to toggle source
# File lib/natural-date/language_bundle.rb, line 47
def symbolize_keys m
  m.map{ |k, v| {k.to_sym => v} }.reduce({}) { |map, element| map.merge(element) }
end
yaml() click to toggle source
# File lib/natural-date/language_bundle.rb, line 24
def yaml
  @yaml ||= begin
              base_path = File.dirname(File.expand_path(__FILE__))
              YAML::load_file(File.join(base_path, 'translator', "#{@lang}.yml"))
            end
end