123456789_123456789_123456789_123456789_123456789_

Class: RDoc::Generator::POT::POEntry

Relationships & Source Files
Inherits: Object
Defined in: lib/rdoc/generator/pot/po_entry.rb

Overview

A PO entry in PO

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(msgid, options = {}) ⇒ POEntry

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

[ GitHub ]

  
# 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

Instance Attribute Details

#extracted_comment (readonly)

The comment content extracted from source file

[ GitHub ]

  
# File 'lib/rdoc/generator/pot/po_entry.rb', line 17

attr_reader :extracted_comment

#flags (readonly)

The flags of the PO entry

[ GitHub ]

  
# File 'lib/rdoc/generator/pot/po_entry.rb', line 23

attr_reader :flags

#msgid (readonly)

The msgid content

[ GitHub ]

  
# File 'lib/rdoc/generator/pot/po_entry.rb', line 8

attr_reader :msgid

#msgstr (readonly)

The msgstr content

[ GitHub ]

  
# File 'lib/rdoc/generator/pot/po_entry.rb', line 11

attr_reader :msgstr

#references (readonly)

The locations where the PO entry is extracted

[ GitHub ]

  
# File 'lib/rdoc/generator/pot/po_entry.rb', line 20

attr_reader :references

#translator_comment (readonly)

The comment content created by translator (PO editor)

[ GitHub ]

  
# File 'lib/rdoc/generator/pot/po_entry.rb', line 14

attr_reader :translator_comment

Instance Method Details

#escape(string) (private)

[ GitHub ]

  
# 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) (private)

[ GitHub ]

  
# 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 (private)

[ GitHub ]

  
# File 'lib/rdoc/generator/pot/po_entry.rb', line 88

def format_extracted_comment
  format_comment('#.', @extracted_comment)
end

#format_flags (private)

[ GitHub ]

  
# 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) (private)

[ GitHub ]

  
# 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 (private)

[ GitHub ]

  
# 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 (private)

[ GitHub ]

  
# File 'lib/rdoc/generator/pot/po_entry.rb', line 84

def format_translator_comment
  format_comment('#', @translator_comment)
end

#merge(other_entry)

Merges the PO entry with other_entry.

[ GitHub ]

  
# 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

#merge_array(array1, array2) (private)

[ GitHub ]

  
# File 'lib/rdoc/generator/pot/po_entry.rb', line 137

def merge_array array1, array2
    (array1 + array2).uniq
end

#merge_string(string1, string2) (private)

[ GitHub ]

  
# File 'lib/rdoc/generator/pot/po_entry.rb', line 133

def merge_string string1, string2
  [string1, string2].compact.join("\n")
end

#to_s

Returns the PO entry in PO format.

[ GitHub ]

  
# 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