Class: Babelyoda::Keyset
- Inherits:
-
Object
- Object
- Babelyoda::Keyset
- Defined in:
- lib/babelyoda/keyset.rb,
lib/babelyoda/tanker.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#keys ⇒ Object
Returns the value of attribute keys.
-
#name ⇒ Object
Returns the value of attribute name.
Class Method Summary collapse
Instance Method Summary collapse
- #drop_empty! ⇒ Object
- #empty? ⇒ Boolean
- #ensure_languages!(languages = []) ⇒ Object
-
#initialize(name) ⇒ Keyset
constructor
A new instance of Keyset.
- #merge!(keyset, options = {}) ⇒ Object
- #merge_key!(localization_key) ⇒ Object
- #to_s ⇒ Object
- #to_xml(xml, language = nil) ⇒ Object
Constructor Details
#initialize(name) ⇒ Keyset
Returns a new instance of Keyset.
13 14 15 16 |
# File 'lib/babelyoda/keyset.rb', line 13 def initialize(name) @name = name @keys = {} end |
Instance Attribute Details
#keys ⇒ Object
Returns the value of attribute keys.
4 5 6 |
# File 'lib/babelyoda/keyset.rb', line 4 def keys @keys end |
#name ⇒ Object
Returns the value of attribute name.
3 4 5 |
# File 'lib/babelyoda/keyset.rb', line 3 def name @name end |
Class Method Details
.keyset_name(filename) ⇒ Object
6 7 8 9 10 11 |
# File 'lib/babelyoda/keyset.rb', line 6 def self.keyset_name(filename) raise ArgumentError.new("Invlaid filename for a .strings file: #{filename}") unless filename.match(/\.strings$/) parts = File.join(File.dirname(filename), File.basename(filename, '.strings')).split('/') parts.delete_if { |part| part.match(/\.lproj$/) } File.join(parts) end |
.parse_xml(node) ⇒ Object
25 26 27 28 29 30 31 |
# File 'lib/babelyoda/tanker.rb', line 25 def self.parse_xml(node) result = self.new(node[:id]) node.css('key').each do |key_node| result.merge_key!(Babelyoda::LocalizationKey.parse_xml(key_node)) end result end |
Instance Method Details
#drop_empty! ⇒ Object
51 52 53 54 55 56 |
# File 'lib/babelyoda/keyset.rb', line 51 def drop_empty! @keys.delete_if do |id, key| key.drop_empty! key.empty? end end |
#empty? ⇒ Boolean
20 |
# File 'lib/babelyoda/keyset.rb', line 20 def empty? ; keys.size == 0 ; end |
#ensure_languages!(languages = []) ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/babelyoda/keyset.rb', line 43 def ensure_languages!(languages = []) @keys.each_value do |key| languages.each do |language| key.values[language] ||= Babelyoda::LocalizationValue.new(language, '') end end end |
#merge!(keyset, options = {}) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/babelyoda/keyset.rb', line 22 def merge!(keyset, = {}) result = { :new => 0, :updated => 0 } keyset.keys.each_pair do |id, key| if @keys.has_key?(id) result[:updated] += 1 if @keys[id].merge!(key, ) else @keys[id] = key.dup result[:new] += 1 end end return result end |
#merge_key!(localization_key) ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/babelyoda/keyset.rb', line 35 def merge_key!(localization_key) if @keys.has_key?(localization_key.id) @keys[localization_key.id].merge!(localization_key) else @keys[localization_key.id] = localization_key end end |
#to_s ⇒ Object
18 |
# File 'lib/babelyoda/keyset.rb', line 18 def to_s ; "<#{self.class}: name = #{name}, keys.size = #{keys.size}>" ; end |
#to_xml(xml, language = nil) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/babelyoda/tanker.rb', line 11 def to_xml(xml, language = nil) xml.keyset(:id => name) do keys.each_value do |key| xml.key(:id => key.id, :is_plural => 'False') do xml.context(key.context) key.values.each_value do |value| next if language && (value.language.to_s != language.to_s) xml.value(value.text, :language => value.language, :status => value.status) end end end end end |