Module: Anastasia
- Defined in:
- lib/anastasia.rb,
lib/anastasia/version.rb
Constant Summary collapse
- NO_SPACE_LANGUAGES =
%w[ja zh].freeze
- VERSION =
'0.1.0'
Class Method Summary collapse
- .append(lang, pos, value, ret) ⇒ Object
- .append_value(lang, key, value, ret) ⇒ Object
- .convert(data) ⇒ Object
- .convert_internal(data, pos, ret) ⇒ Object
- .no_space_language?(lang) ⇒ Boolean
Class Method Details
.append(lang, pos, value, ret) ⇒ Object
22 23 24 25 26 27 |
# File 'lib/anastasia.rb', line 22 def self.append(lang, pos, value, ret) pos = pos.dup ret = (ret[lang] ||= {}) ret = (ret[pos.shift] ||= {}) while pos.count >= 2 append_value(lang, pos[0], value, ret) end |
.append_value(lang, key, value, ret) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/anastasia.rb', line 29 def self.append_value(lang, key, value, ret) case value when String ret[key] = value when Array ret[key] = value.join(no_space_language?(lang) ? '' : ' ') when Hash value.each do |k, v| key_with_context = k == '_' ? key : "#{key}_#{k}" append_value(lang, key_with_context, v, ret) end end end |
.convert(data) ⇒ Object
6 7 8 |
# File 'lib/anastasia.rb', line 6 def self.convert(data) convert_internal(data, [], {}) end |
.convert_internal(data, pos, ret) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/anastasia.rb', line 10 def self.convert_internal(data, pos, ret) data.each do |k, v| if k.start_with?(';') append(k[1..], pos, v, ret) else convert_internal(v, pos + k.split('.'), ret) end end ret end |
.no_space_language?(lang) ⇒ Boolean
45 46 47 48 |
# File 'lib/anastasia.rb', line 45 def self.no_space_language?(lang) lang = lang.split('-').first.downcase NO_SPACE_LANGUAGES.include?(lang) end |