Class: GetText::POEntry::Formatter

Inherits:
Object
  • Object
show all
Includes:
GetText::POFormat
Defined in:
lib/gettext/po_entry.rb

Constant Summary collapse

DEFAULT_MAX_LINE_WIDTH =
78

Constants included from GetText::POFormat

GetText::POFormat::EXTRACTED_COMMENT_MARK, GetText::POFormat::FLAG_MARK, GetText::POFormat::PREVIOUS_COMMENT_MARK, GetText::POFormat::REFERENCE_COMMENT_MARK, GetText::POFormat::TRANSLATOR_COMMENT_MARK

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(entry, options = {}) ⇒ Formatter

Returns a new instance of Formatter.

Parameters:

  • entry (POEntry)

    The entry to be formatted.

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :include_reference_comment (Bool) — default: true

    Includes reference comments in formatted string if true.

  • :max_line_width (Integer) — default: 78

    Wraps long lines that is longer than the :max_line_width. Don't break long lines if :max_line_width is less than 0 such as -1.



215
216
217
218
# File 'lib/gettext/po_entry.rb', line 215

def initialize(entry, options={})
  @entry = entry
  @options = fill_default_option_values(options)
end

Class Method Details

.escape(string) ⇒ Object



186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
# File 'lib/gettext/po_entry.rb', line 186

def escape(string)
  return "" if string.nil?

  string.gsub(/([\\"\t\n])/) do
    special_character = $1
    case special_character
    when "\t"
      "\\t"
    when "\n"
      "\\n"
    else
      "\\#{special_character}"
    end
  end
end

Instance Method Details

#formatObject



220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
# File 'lib/gettext/po_entry.rb', line 220

def format
  # extracted comments
  if @entry.msgid == :last
    return format_obsolete_comment(@entry.comment)
  end

  str = ""
  str << format_translator_comment
  str << format_extracted_comment
  if @options[:include_reference_comment]
    str << format_reference_comment
  end
  str << format_flag_comment
  str << format_previous_comment

  # msgctxt, msgid, msgstr
  if @entry.msgctxt?
    if @entry.msgctxt.nil?
      no_msgctxt_message = "This POEntry is a kind of msgctxt " +
                             "but the msgctxt property is nil. " +
                             "msgid: #{@entry.msgid}"
      raise(NoMsgctxtError, no_msgctxt_message)
    end
    str << "msgctxt " << format_message(@entry.msgctxt)
  end

  str << "msgid " << format_message(@entry.msgid)
  if @entry.plural?
    if @entry.msgid_plural.nil?
      no_plural_message = "This POEntry is a kind of plural " +
                            "but the msgid_plural property is nil. " +
                            "msgid: #{@entry.msgid}"
      raise(NoMsgidPluralError, no_plural_message)
    end

    str << "msgid_plural " << format_message(@entry.msgid_plural)

    if @entry.msgstr.nil?
      str << "msgstr[0] \"\"\n"
      str << "msgstr[1] \"\"\n"
    else
      msgstrs = @entry.msgstr.split("\000", -1)
      msgstrs.each_with_index do |msgstr, index|
        str << "msgstr[#{index}] " << format_message(msgstr)
      end
    end
  else
    str << "msgstr "
    str << format_message(@entry.msgstr)
  end
  str
end