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