# class RDoc::Generator::POT::POEntry

frozen_string_literal: false

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