Class: Babelyoda::Keyset
- Inherits:
-
Object
- Object
- Babelyoda::Keyset
- Defined in:
- lib/babelyoda/keyset.rb,
lib/babelyoda/tanker.rb,
lib/babelyoda/strings.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
- #debug_counts(languages = []) ⇒ Object
- #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_strings(io, language) ⇒ Object
- #to_xml(xml, language = nil) ⇒ Object
Constructor Details
#initialize(name) ⇒ Keyset
Returns a new instance of Keyset.
15 16 17 18 |
# File 'lib/babelyoda/keyset.rb', line 15 def initialize(name) @name = name @keys = {} end |
Instance Attribute Details
#keys ⇒ Object
Returns the value of attribute keys.
6 7 8 |
# File 'lib/babelyoda/keyset.rb', line 6 def keys @keys end |
#name ⇒ Object
Returns the value of attribute name.
5 6 7 |
# File 'lib/babelyoda/keyset.rb', line 5 def name @name end |
Class Method Details
.keyset_name(filename) ⇒ Object
8 9 10 11 12 13 |
# File 'lib/babelyoda/keyset.rb', line 8 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
21 22 23 24 25 26 27 |
# File 'lib/babelyoda/tanker.rb', line 21 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
#debug_counts(languages = []) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/babelyoda/keyset.rb', line 22 def debug_counts(languages = []) counts = languages.map do |language| count = 0 keys.each_value do |key| count += 1 if key.values.has_key?(language) end count end $logger.debug "=== DEBUG COUNTS FOR: #{name} ===" languages.each_with_index do |language, index| $logger.debug "#{language}: #{counts[index]}" end $logger.debug "=== // DEBUG COUNTS FOR: #{name} ===" end |
#drop_empty! ⇒ Object
66 67 68 69 70 71 |
# File 'lib/babelyoda/keyset.rb', line 66 def drop_empty! @keys.delete_if do |id, key| key.drop_empty! key.empty? end end |
#empty? ⇒ Boolean
37 |
# File 'lib/babelyoda/keyset.rb', line 37 def empty? ; keys.size == 0 ; end |
#ensure_languages!(languages = []) ⇒ Object
60 61 62 63 64 |
# File 'lib/babelyoda/keyset.rb', line 60 def ensure_languages!(languages = []) @keys.each_value do |key| key.ensure_languages!(languages) end end |
#merge!(keyset, options = {}) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/babelyoda/keyset.rb', line 39 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
52 53 54 55 56 57 58 |
# File 'lib/babelyoda/keyset.rb', line 52 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
20 |
# File 'lib/babelyoda/keyset.rb', line 20 def to_s ; "<#{self.class}: name = #{name}, keys.size = #{keys.size}>" ; end |
#to_strings(io, language) ⇒ Object
11 12 13 14 15 16 17 |
# File 'lib/babelyoda/strings.rb', line 11 def to_strings(io, language) keys.keys.sort.each do |key| localization_key = keys[key] localization_key.to_strings(io, language) end io << "/* No strings yet. */\n" if io.size == 0 end |
#to_xml(xml, language = nil) ⇒ Object
13 14 15 16 17 18 19 |
# File 'lib/babelyoda/tanker.rb', line 13 def to_xml(xml, language = nil) xml.keyset(:id => name) do keys.each_value do |key| key.to_xml(xml, language) end end end |