Class: Gitlab::I18n::TranslationEntry

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/i18n/translation_entry.rb

Constant Summary collapse

PERCENT_REGEX =
/(?:^|[^%])%(?!{\w*}|[a-z%])/
ANGLE_BRACKET_REGEX =
/[<>]/

Instance Attribute Summary collapse

Instance Method Summary collapse

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_dataObject (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

#npluralsObject (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_translationsObject



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

Returns:

  • (Boolean)


83
84
85
# File 'lib/gitlab/i18n/translation_entry.rb', line 83

def contains_unescaped_chars?(string)
  string =~ PERCENT_REGEX
end

#flagObject



51
52
53
# File 'lib/gitlab/i18n/translation_entry.rb', line 51

def flag
  entry_data[:flag]
end

#has_plural?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/gitlab/i18n/translation_entry.rb', line 24

def has_plural?
  plural_id.present?
end

#has_singular_translation?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/gitlab/i18n/translation_entry.rb', line 55

def has_singular_translation?
  nplurals > 1 || !has_plural?
end

#msgidObject



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

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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_idObject



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

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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_translationsObject



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_translationObject



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

Returns:

  • (Boolean)


36
37
38
# File 'lib/gitlab/i18n/translation_entry.rb', line 36

def translated?
  all_translations.any?
end

#translations_contain_potential_html?Boolean

Returns:

  • (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

Returns:

  • (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

Returns:

  • (Boolean)


67
68
69
# File 'lib/gitlab/i18n/translation_entry.rb', line 67

def translations_have_multiple_lines?
  translation_entries.any?(Array)
end