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.

Options Hash (options):

  • :include_translator_comment (Bool) — default: true

    Includes translator comments in formatted string if true.

  • :include_extracted_comment (Bool) — default: true

    Includes extracted comments in formatted string if true.

  • :include_reference_comment (Bool) — default: true

    Includes reference comments in formatted string if true.

  • :include_flag_comment (Bool) — default: true

    Includes flag comments in formatted string if true.

  • :include_previous_comment (Bool) — default: true

    Includes previous comments in formatted string if true.

  • :include_all_comments (Bool) — default: true

    Includes all comments in formatted string if true. Other specific :include_XXX options get preference over this option. You can remove all comments by specifying this option as false and omitting other :include_XXX options.

  • :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.

  • :encoding (Encoding) — default: nil

    Encodes to the specific encoding.



269
270
271
272
# File 'lib/gettext/po_entry.rb', line 269

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

Class Method Details

.escape(string) ⇒ Object



224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
# File 'lib/gettext/po_entry.rb', line 224

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



274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
# File 'lib/gettext/po_entry.rb', line 274

def format
  if @entry.obsolete?
    return format_obsolete_comment(@entry.comment)
  end

  str = format_comments

  # 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

  encode(str)
end