class RDoc::Generator::POT::POEntry
def escape string
def escape string string.gsub(/["\\\t\n]/) do |special_character| case special_character when "\t" "\\t" when "\n" "\\n" else "\\#{special_character}" end end end
def format_comment mark, comment
def format_comment mark, comment return '' unless comment return '' if comment.empty? formatted_comment = '' comment.each_line do |line| formatted_comment << "#{mark} #{line}" end formatted_comment << "\n" unless formatted_comment.end_with?("\n") formatted_comment end
def format_extracted_comment
def format_extracted_comment format_comment('#.', @extracted_comment) end
def format_flags
def format_flags return '' if @flags.empty? formatted_flags = flags.join(",") "\#, #{formatted_flags}\n" end
def format_message message
def format_message message return "\"#{escape(message)}\"" unless message.include?("\n") formatted_message = '""' message.each_line do |line| formatted_message << "\n" formatted_message << "\"#{escape(line)}\"" end formatted_message end
def format_references
def format_references return '' if @references.empty? formatted_references = '' @references.sort.each do |file, line| formatted_references << "\#: #{file}:#{line}\n" end formatted_references end
def format_translator_comment
def format_translator_comment format_comment('#', @translator_comment) end
def initialize msgid, options = {}
def initialize msgid, options = {} @msgid = msgid @msgstr = options[:msgstr] || "" @translator_comment = options[:translator_comment] @extracted_comment = options[:extracted_comment] @references = options[:references] || [] @flags = options[:flags] || [] end
def merge other_entry
def merge other_entry options = { :extracted_comment => merge_string(@extracted_comment, other_entry.extracted_comment), :translator_comment => merge_string(@translator_comment, other_entry.translator_comment), :references => merge_array(@references, other_entry.references), :flags => merge_array(@flags, other_entry.flags), } self.class.new(@msgid, options) end
def merge_array array1, array2
def merge_array array1, array2 (array1 + array2).uniq end
def merge_string string1, string2
def merge_string string1, string2 [string1, string2].compact.join("\n") end
def to_s
def to_s entry = '' entry << format_translator_comment entry << format_extracted_comment entry << format_references entry << format_flags entry << <<-ENTRY gid #{format_message(@msgid)} gstr #{format_message(@msgstr)} ENTRY end