class RDoc::Generator::POT::POEntry

frozen_string_literal: true

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 29
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 56
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 41
  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 120
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 72
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 88
def format_extracted_comment
  format_comment('#.', @extracted_comment)
end
format_flags() click to toggle source
# File lib/rdoc/generator/pot/po_entry.rb, line 102
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 109
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 92
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 84
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 137
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 133
def merge_string string1, string2
  [string1, string2].compact.join("\n")
end