# class RDoc::Generator::POT::PO

frozen_string_literal: false

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