Class: TwitterCldr::Localized::LocalizedString

Inherits:
LocalizedObject show all
Includes:
Enumerable
Defined in:
lib/twitter_cldr/localized/localized_string.rb

Instance Attribute Summary

Attributes inherited from LocalizedObject

#base_obj, #locale

Instance Method Summary collapse

Methods inherited from LocalizedObject

#initialize, localize

Constructor Details

This class inherits a constructor from TwitterCldr::Localized::LocalizedObject

Instance Method Details

#%(args) ⇒ Object

Uses wrapped string object as a format specification and returns the result of applying it to args (see standard String#% method documentation for interpolation syntax).

If args is a Hash than pluralization is performed before interpolation (see PluralFormatter class for pluralization specification).



18
19
20
21
# File 'lib/twitter_cldr/localized/localized_string.rb', line 18

def %(args)
  pluralized = args.is_a?(Hash) ? formatter.format(@base_obj, args) : @base_obj
  escape_plural_interpolation(pluralized) % args
end

#[](index) ⇒ Object



119
120
121
122
123
124
125
# File 'lib/twitter_cldr/localized/localized_string.rb', line 119

def [](index)
  if index.is_a?(Range)
    TwitterCldr::Utils::CodePoints.to_string(code_points[index])
  else
    TwitterCldr::Utils::CodePoints.to_char(code_points[index])
  end
end

#bytesizeObject



115
116
117
# File 'lib/twitter_cldr/localized/localized_string.rb', line 115

def bytesize
  @base_obj.bytesize
end

#casefold(options = {}) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/twitter_cldr/localized/localized_string.rb', line 27

def casefold(options = {})
  unless options.include?(:t)
    # Turkish and azerbaijani use the dotless i and therefore have a few
    # special casefolding rules. Note "az" is not actually supported yet.
    options[:t] = [:tr, :az].include?(locale)
  end

  TwitterCldr::Shared::Casefolder.
    casefold(@base_obj, options[:t]).
    localize(locale)
end

#code_pointsObject



87
88
89
# File 'lib/twitter_cldr/localized/localized_string.rb', line 87

def code_points
  TwitterCldr::Utils::CodePoints.from_string(@base_obj)
end

#downcaseObject



39
40
41
42
43
# File 'lib/twitter_cldr/localized/localized_string.rb', line 39

def downcase
  self.class.new(
    TwitterCldr::Shared::Caser.downcase(@base_obj), locale
  )
end

#each_charObject Also known as: each



127
128
129
130
131
132
133
134
135
136
# File 'lib/twitter_cldr/localized/localized_string.rb', line 127

def each_char
  if block_given?
    code_points.each do |code_point|
      yield TwitterCldr::Utils::CodePoints.to_char(code_point)
    end
    @base_obj
  else
    code_points.map { |code_point| TwitterCldr::Utils::CodePoints.to_char(code_point) }.to_enum
  end
end

#each_sentenceObject



57
58
59
60
61
62
63
64
65
# File 'lib/twitter_cldr/localized/localized_string.rb', line 57

def each_sentence
  if block_given?
    break_iterator.each_sentence(@base_obj) do |sentence|
      yield sentence.localize(locale)
    end
  else
    to_enum(__method__)
  end
end

#each_wordObject



67
68
69
70
71
72
73
74
75
# File 'lib/twitter_cldr/localized/localized_string.rb', line 67

def each_word
  if block_given?
    break_iterator.each_word(@base_obj) do |word|
      yield word.localize(locale)
    end
  else
    to_enum(__method__)
  end
end

#hyphenate(delimiter = nil) ⇒ Object



77
78
79
80
81
82
83
84
85
# File 'lib/twitter_cldr/localized/localized_string.rb', line 77

def hyphenate(delimiter = nil)
  hyphenated_str = @base_obj.dup

  break_iterator.each_word(@base_obj).reverse_each do |word, start, stop|
    hyphenated_str[start...stop] = hyphenator.hyphenate(word, delimiter)
  end

  hyphenated_str.localize(locale)
end

#normalize(options = {}) ⇒ Object



23
24
25
# File 'lib/twitter_cldr/localized/localized_string.rb', line 23

def normalize(options = {})
  TwitterCldr::Normalization.normalize(@base_obj, options).localize(locale)
end

#scriptObject



160
161
162
# File 'lib/twitter_cldr/localized/localized_string.rb', line 160

def script
  TwitterCldr::Utils::ScriptDetector.detect_scripts(@base_obj).best_guess
end

#scriptsObject



156
157
158
# File 'lib/twitter_cldr/localized/localized_string.rb', line 156

def scripts
  TwitterCldr::Utils::ScriptDetector.detect_scripts(@base_obj).scripts
end

#sizeObject Also known as: length



109
110
111
# File 'lib/twitter_cldr/localized/localized_string.rb', line 109

def size
  code_points.size
end

#titlecaseObject



51
52
53
54
55
# File 'lib/twitter_cldr/localized/localized_string.rb', line 51

def titlecase
  self.class.new(
    TwitterCldr::Shared::Caser.titlecase(@base_obj), locale
  )
end

#to_bidi(options = {}) ⇒ Object



144
145
146
# File 'lib/twitter_cldr/localized/localized_string.rb', line 144

def to_bidi(options = {})
  TwitterCldr::Shared::Bidi.from_string(@base_obj, options)
end

#to_f(options = {}) ⇒ Object



99
100
101
102
103
104
105
106
107
# File 'lib/twitter_cldr/localized/localized_string.rb', line 99

def to_f(options = {})
  if number_parser.class.is_numeric?(@base_obj)
    number_parser.try_parse(@base_obj, options) do |result|
      result || @base_obj.to_f
    end
  else
    @base_obj.to_f
  end
end

#to_i(options = {}) ⇒ Object



95
96
97
# File 'lib/twitter_cldr/localized/localized_string.rb', line 95

def to_i(options = {})
  to_f(options).to_i
end

#to_reordered_s(options = {}) ⇒ Object



148
149
150
# File 'lib/twitter_cldr/localized/localized_string.rb', line 148

def to_reordered_s(options = {})
  to_bidi(options).reorder_visually!.to_s
end

#to_sObject



91
92
93
# File 'lib/twitter_cldr/localized/localized_string.rb', line 91

def to_s
  @base_obj.dup
end

#to_territoryObject



152
153
154
# File 'lib/twitter_cldr/localized/localized_string.rb', line 152

def to_territory
  TwitterCldr::Shared::Territory.new(@base_obj)
end

#to_yaml(options = {}) ⇒ Object



140
141
142
# File 'lib/twitter_cldr/localized/localized_string.rb', line 140

def to_yaml(options = {})
  TwitterCldr::Utils::YAML.dump(@base_obj, options)
end

#transliterate_into(target_locale) ⇒ Object



164
165
166
# File 'lib/twitter_cldr/localized/localized_string.rb', line 164

def transliterate_into(target_locale)
  TwitterCldr::Transforms::Transliterator.transliterate(@base_obj, locale, target_locale)
end

#upcaseObject



45
46
47
48
49
# File 'lib/twitter_cldr/localized/localized_string.rb', line 45

def upcase
  self.class.new(
    TwitterCldr::Shared::Caser.upcase(@base_obj), locale
  )
end