class GetText::Tools::MsgCat::Merger
@private
Public Class Methods
new(output_po, config)
click to toggle source
# File lib/gettext/tools/msgcat.rb, line 69 def initialize(output_po, config) @output_po = output_po @config = config end
Public Instance Methods
merge(po)
click to toggle source
# File lib/gettext/tools/msgcat.rb, line 74 def merge(po) po.each do |entry| if entry.msgid == :last next unless @config.output_obsolete_entries? end id = [entry.msgctxt, entry.msgid] if @output_po.has_key?(*id) merged_entry = merge_entry(@output_po[*id], entry) else merged_entry = entry end next unless merged_entry remove_header_fields!(merged_entry) if merged_entry.header? @output_po[*id] = merged_entry end end
Private Instance Methods
merge_entry(base_entry, new_entry)
click to toggle source
# File lib/gettext/tools/msgcat.rb, line 92 def merge_entry(base_entry, new_entry) if base_entry.header? return merge_header(base_entry, new_entry) end if base_entry.fuzzy? return merge_fuzzy_entry(base_entry, new_entry) end if base_entry.translated? base_entry else new_entry end end
merge_fuzzy_entry(base_entry, new_entry)
click to toggle source
# File lib/gettext/tools/msgcat.rb, line 112 def merge_fuzzy_entry(base_entry, new_entry) return new_entry unless new_entry.fuzzy? return nil unless @config.include_fuzzy? base_entry end
merge_header(base_entry, new_entry)
click to toggle source
# File lib/gettext/tools/msgcat.rb, line 108 def merge_header(base_entry, new_entry) base_entry end
remove_header_fields!(header_entry)
click to toggle source
# File lib/gettext/tools/msgcat.rb, line 118 def remove_header_fields!(header_entry) remove_header_fields = @config.remove_header_fields return if remove_header_fields.empty? msgstr = header_entry.msgstr return if msgstr.nil? new_msgstr = "" msgstr.each_line do |line| case line when /\A([\w\-]+):/ name = $1 next if remove_header_fields.include?(name) end new_msgstr << line end header_entry.msgstr = new_msgstr end