class RDoc::Generator::POT::POEntry

A PO entry in PO

Attributes

extracted_comment[R]

The comment content extracted from source file

flags[R]

The flags of the PO entry

msgid[R]

The msgid content

msgstr[R]

The msgstr content

references[R]

The locations where the PO entry is extracted

translator_comment[R]

The comment content created by translator (PO editor)

Public Class Methods

new(msgid, options = {}) click to toggle source

Creates a PO entry for msgid. Other valus can be specified by options.

# File lib/rdoc/generator/pot/po_entry.rb, line 28
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

Public Instance Methods

merge(other_entry) click to toggle source

Merges the PO entry with other_entry.

# File lib/rdoc/generator/pot/po_entry.rb, line 55
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
to_s() click to toggle source

Returns the PO entry in PO format.

# File lib/rdoc/generator/pot/po_entry.rb, line 40
  def to_s
    entry = ''
    entry << format_translator_comment
    entry << format_extracted_comment
    entry << format_references
    entry << format_flags
    entry << <<-ENTRY
msgid #{format_message(@msgid)}
msgstr #{format_message(@msgstr)}
    ENTRY
  end

Private Instance Methods

escape(string) click to toggle source
# File lib/rdoc/generator/pot/po_entry.rb, line 119
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
format_comment(mark, comment) click to toggle source
# File lib/rdoc/generator/pot/po_entry.rb, line 71
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
format_extracted_comment() click to toggle source
# File lib/rdoc/generator/pot/po_entry.rb, line 87
def format_extracted_comment
  format_comment('#.', @extracted_comment)
end
format_flags() click to toggle source
# File lib/rdoc/generator/pot/po_entry.rb, line 101
def format_flags
  return '' if @flags.empty?

  formatted_flags = flags.join(",")
  "\#, #{formatted_flags}\n"
end
format_message(message) click to toggle source
# File lib/rdoc/generator/pot/po_entry.rb, line 108
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
format_references() click to toggle source
# File lib/rdoc/generator/pot/po_entry.rb, line 91
def format_references
  return '' if @references.empty?

  formatted_references = ''
  @references.sort.each do |file, line|
    formatted_references << "\#: #{file}:#{line}\n"
  end
  formatted_references
end
format_translator_comment() click to toggle source
# File lib/rdoc/generator/pot/po_entry.rb, line 83
def format_translator_comment
  format_comment('#', @translator_comment)
end
merge_array(array1, array2) click to toggle source
# File lib/rdoc/generator/pot/po_entry.rb, line 136
def merge_array array1, array2
    (array1 + array2).uniq
end
merge_string(string1, string2) click to toggle source
# File lib/rdoc/generator/pot/po_entry.rb, line 132
def merge_string string1, string2
  [string1, string2].compact.join("\n")
end