class RDoc::Generator::POT::PO

frozen_string_literal: true

Generates a PO format text

Public Class Methods

new() click to toggle source

Creates an object that represents PO format.

# File lib/rdoc/generator/pot/po.rb, line 10
def initialize
  @entries = {}
  add_header
end

Public Instance Methods

add(entry) click to toggle source

Adds a PO entry to the PO.

# File lib/rdoc/generator/pot/po.rb, line 18
def add entry
  existing_entry = @entries[entry.msgid]
  if existing_entry
    entry = existing_entry.merge(entry)
  end
  @entries[entry.msgid] = entry
end
to_s() click to toggle source

Returns PO format text for the PO.

# File lib/rdoc/generator/pot/po.rb, line 29
def to_s
  po = ''
  sort_entries.each do |entry|
    po += "\n" unless po.empty?
    po += entry.to_s
  end
  po
end

Private Instance Methods

add_header() click to toggle source
# File lib/rdoc/generator/pot/po.rb, line 40
def add_header
  add(header_entry)
end
header_entry() click to toggle source
# File lib/rdoc/generator/pot/po.rb, line 44
  def header_entry
    comment = <<-COMMENT
SOME DESCRIPTIVE TITLE.
Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
This file is distributed under the same license as the PACKAGE package.
FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
    COMMENT

    content = <<-CONTENT
Project-Id-Version: PACKAGE VERSEION
Report-Msgid-Bugs-To:
PO-Revision-Date: YEAR-MO_DA HO:MI+ZONE
Last-Translator: FULL NAME <EMAIL@ADDRESS>
Language-Team: LANGUAGE <LL@li.org>
Language:
MIME-Version: 1.0
Content-Type: text/plain; charset=CHARSET
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;
    CONTENT

    options = {
      :msgstr => content,
      :translator_comment => comment,
      :flags => ['fuzzy'],
    }
    RDoc::Generator::POT::POEntry.new('', options)
  end
sort_entries() click to toggle source
# File lib/rdoc/generator/pot/po.rb, line 73
def sort_entries
  headers, messages = @entries.values.partition do |entry|
    entry.msgid.empty?
  end
  # TODO: sort by location
  sorted_messages = messages.sort_by do |entry|
    entry.msgid
  end
  headers + sorted_messages
end