Class: Gitlab::I18n::TranslationEntry
- Inherits:
-
Object
- Object
- Gitlab::I18n::TranslationEntry
- Defined in:
- lib/gitlab/i18n/translation_entry.rb
Constant Summary collapse
- PERCENT_REGEX =
/(?:^|[^%])%(?!{\w*}|[a-z%])/
- ANGLE_BRACKET_REGEX =
/[<>]/
Instance Attribute Summary collapse
-
#entry_data ⇒ Object
readonly
Returns the value of attribute entry_data.
-
#nplurals ⇒ Object
readonly
Returns the value of attribute nplurals.
Instance Method Summary collapse
- #all_translations ⇒ Object
- #contains_unescaped_chars?(string) ⇒ Boolean
- #flag ⇒ Object
- #has_plural? ⇒ Boolean
- #has_singular_translation? ⇒ Boolean
-
#initialize(entry_data:, nplurals:) ⇒ TranslationEntry
constructor
A new instance of TranslationEntry.
- #msgid ⇒ Object
- #msgid_contains_potential_html? ⇒ Boolean
- #msgid_contains_unescaped_chars? ⇒ Boolean
- #msgid_has_multiple_lines? ⇒ Boolean
- #plural_id ⇒ Object
- #plural_id_contains_potential_html? ⇒ Boolean
- #plural_id_contains_unescaped_chars? ⇒ Boolean
- #plural_id_has_multiple_lines? ⇒ Boolean
- #plural_translations ⇒ Object
- #singular_translation ⇒ Object
- #translated? ⇒ Boolean
- #translations_contain_potential_html? ⇒ Boolean
- #translations_contain_unescaped_chars? ⇒ Boolean
- #translations_have_multiple_lines? ⇒ Boolean
Constructor Details
#initialize(entry_data:, nplurals:) ⇒ TranslationEntry
Returns a new instance of TranslationEntry.
11 12 13 14 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 11 def initialize(entry_data:, nplurals:) @entry_data = entry_data @nplurals = nplurals end |
Instance Attribute Details
#entry_data ⇒ Object (readonly)
Returns the value of attribute entry_data.
9 10 11 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 9 def entry_data @entry_data end |
#nplurals ⇒ Object (readonly)
Returns the value of attribute nplurals.
9 10 11 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 9 def nplurals @nplurals end |
Instance Method Details
#all_translations ⇒ Object
32 33 34 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 32 def all_translations @all_translations ||= translation_entries.map { |translation| Array(translation).join } end |
#contains_unescaped_chars?(string) ⇒ Boolean
83 84 85 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 83 def contains_unescaped_chars?(string) string =~ PERCENT_REGEX end |
#flag ⇒ Object
51 52 53 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 51 def flag entry_data[:flag] end |
#has_plural? ⇒ Boolean
24 25 26 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 24 def has_plural? plural_id.present? end |
#has_singular_translation? ⇒ Boolean
55 56 57 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 55 def has_singular_translation? nplurals > 1 || !has_plural? end |
#msgid ⇒ Object
16 17 18 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 16 def msgid @msgid ||= Array(entry_data[:msgid]).join end |
#msgid_contains_potential_html? ⇒ Boolean
87 88 89 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 87 def msgid_contains_potential_html? contains_angle_brackets?(msgid) end |
#msgid_contains_unescaped_chars? ⇒ Boolean
71 72 73 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 71 def msgid_contains_unescaped_chars? contains_unescaped_chars?(msgid) end |
#msgid_has_multiple_lines? ⇒ Boolean
59 60 61 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 59 def msgid_has_multiple_lines? entry_data[:msgid].is_a?(Array) end |
#plural_id ⇒ Object
20 21 22 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 20 def plural_id @plural_id ||= Array(entry_data[:msgid_plural]).join end |
#plural_id_contains_potential_html? ⇒ Boolean
91 92 93 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 91 def plural_id_contains_potential_html? contains_angle_brackets?(plural_id) end |
#plural_id_contains_unescaped_chars? ⇒ Boolean
75 76 77 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 75 def plural_id_contains_unescaped_chars? contains_unescaped_chars?(plural_id) end |
#plural_id_has_multiple_lines? ⇒ Boolean
63 64 65 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 63 def plural_id_has_multiple_lines? entry_data[:msgid_plural].is_a?(Array) end |
#plural_translations ⇒ Object
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 40 def plural_translations return [] unless has_plural? return [] unless translated? @plural_translations ||= if has_singular_translation? all_translations.drop(1) else all_translations end end |
#singular_translation ⇒ Object
28 29 30 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 28 def singular_translation all_translations.first.to_s if has_singular_translation? end |
#translated? ⇒ Boolean
36 37 38 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 36 def translated? all_translations.any? end |
#translations_contain_potential_html? ⇒ Boolean
95 96 97 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 95 def translations_contain_potential_html? all_translations.any? { |translation| contains_angle_brackets?(translation) } end |
#translations_contain_unescaped_chars? ⇒ Boolean
79 80 81 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 79 def translations_contain_unescaped_chars? all_translations.any? { |translation| contains_unescaped_chars?(translation) } end |
#translations_have_multiple_lines? ⇒ Boolean
67 68 69 |
# File 'lib/gitlab/i18n/translation_entry.rb', line 67 def translations_have_multiple_lines? translation_entries.any?(Array) end |