Module: Num2words::Locales::TE

Defined in:
lib/num2words/locales/te.rb

Constant Summary collapse

ONES_MASC =
I18n.t("num2words.ones_masc", locale: :te)
ONES_FEM =
I18n.t("num2words.ones_fem", locale: :te)
TEENS =
I18n.t("num2words.teens", locale: :te)
TENS =
I18n.t("num2words.tens", locale: :te)
HUNDREDS =
I18n.t("num2words.hundreds", locale: :te)
SCALES =
I18n.t("num2words.scales", locale: :te)
FRACTIONS =
I18n.t("num2words.fractions", locale: :te)
GRAMMAR =
I18n.t("num2words.grammar", locale: :te)
DATE =
I18n.t("num2words.date", locale: :te)
DATE_TEMPLATE =
I18n.t("num2words.date.template", locale: :te)
TIME =
I18n.t("num2words.time", locale: :te)
TIME_TEMPLATE =
I18n.t("num2words.time.template", locale: :te)
DATETIME_TEMPLATE =
I18n.t("num2words.datetime.template", locale: :te)
ORDINALS =
I18n.t("num2words.numbers.ordinals", locale: :te)
UNDER_HUNDRED =
[
  "సున్నా", "ఒకటి", "రెండు", "మూడు", "నాలుగు", "ఐదు", "ఆరు", "ఏడు", "ఎనిమిది", "తొమ్మిది",
  "పది", "పదకొండు", "పన్నెండు", "పదమూడు", "పద్నాలుగు", "పదిహేను", "పదహారు", "పదిహేడు", "పద్దెనిమిది", "పంతొమ్మిది",
  "ఇరవై", "ఇరవై ఒకటి", "ఇరవై రెండు", "ఇరవై మూడు", "ఇరవై నాలుగు", "ఇరవై ఐదు", "ఇరవై ఆరు", "ఇరవై ఏడు", "ఇరవై ఎనిమిది", "ఇరవై తొమ్మిది",
  "ముప్పై", "ముప్పై ఒకటి", "ముప్పై రెండు", "ముప్పై మూడు", "ముప్పై నాలుగు", "ముప్పై ఐదు", "ముప్పై ఆరు", "ముప్పై ఏడు", "ముప్పై ఎనిమిది", "ముప్పై తొమ్మిది",
  "నలభై", "నలభై ఒకటి", "నలభై రెండు", "నలభై మూడు", "నలభై నాలుగు", "నలభై ఐదు", "నలభై ఆరు", "నలభై ఏడు", "నలభై ఎనిమిది", "నలభై తొమ్మిది",
  "యాభై", "యాభై ఒకటి", "యాభై రెండు", "యాభై మూడు", "యాభై నాలుగు", "యాభై ఐదు", "యాభై ఆరు", "యాభై ఏడు", "యాభై ఎనిమిది", "యాభై తొమ్మిది",
  "అరవై", "అరవై ఒకటి", "అరవై రెండు", "అరవై మూడు", "అరవై నాలుగు", "అరవై ఐదు", "అరవై ఆరు", "అరవై ఏడు", "అరవై ఎనిమిది", "అరవై తొమ్మిది",
  "డెబ్బై", "డెబ్బై ఒకటి", "డెబ్బై రెండు", "డెబ్బై మూడు", "డెబ్బై నాలుగు", "డెబ్బై ఐదు", "డెబ్బై ఆరు", "డెబ్బై ఏడు", "డెబ్బై ఎనిమిది", "డెబ్బై తొమ్మిది",
  "ఎనభై", "ఎనభై ఒకటి", "ఎనభై రెండు", "ఎనభై మూడు", "ఎనభై నాలుగు", "ఎనభై ఐదు", "ఎనభై ఆరు", "ఎనభై ఏడు", "ఎనభై ఎనిమిది", "ఎనభై తొమ్మిది",
  "తొంభై", "తొంభై ఒకటి", "తొంభై రెండు", "తొంభై మూడు", "తొంభై నాలుగు", "తొంభై ఐదు", "తొంభై ఆరు", "తొంభై ఏడు", "తొంభై ఎనిమిది", "తొంభై తొమ్మిది"
].freeze
INDIAN_SCALES =
[
  [1_000_000_000, "వంద కోట్లు"],
  [10_000_000, "కోటి"],
  [100_000, "లక్ష"],
  [1_000, "వెయ్యి"]
].freeze

Class Method Summary collapse

Class Method Details

.cardinal(number) ⇒ Object



119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/num2words/locales/te.rb', line 119

def cardinal(number)
  integer_value = Integer(number)
  negative = integer_value.negative?
  integer_value = integer_value.abs

  return UNDER_HUNDRED[0] if integer_value.zero?

  remainder = integer_value
  words = []

  INDIAN_SCALES.each do |value, label|
    next if remainder < value

    group_value = remainder / value
    remainder %= value
    words << [cardinal(group_value), label].join(" ")
  end

  words << under_thousand(remainder) if remainder.positive?
  words.unshift(minus_word) if negative
  words.join(" ")
end

.currency_major_feminine?(_currency) ⇒ Boolean

Returns:

  • (Boolean)


98
99
100
# File 'lib/num2words/locales/te.rb', line 98

def currency_major_feminine?(_currency)
  false
end

.currency_minor_feminine?(_currency) ⇒ Boolean

Returns:

  • (Boolean)


102
103
104
# File 'lib/num2words/locales/te.rb', line 102

def currency_minor_feminine?(_currency)
  false
end

.currency_number_words(number, _currency, unit:) ⇒ Object



106
107
108
# File 'lib/num2words/locales/te.rb', line 106

def currency_number_words(number, _currency, unit:)
  cardinal(number)
end

.date_day(day, format:, date_case:) ⇒ Object



82
83
84
# File 'lib/num2words/locales/te.rb', line 82

def date_day(day, format:, date_case:)
  ordinal(day, :default)
end

.date_year(year, format:) ⇒ Object



86
87
88
# File 'lib/num2words/locales/te.rb', line 86

def date_year(year, format:)
  cardinal(year)
end

.decimal_fraction_words(fraction_string) ⇒ Object



78
79
80
# File 'lib/num2words/locales/te.rb', line 78

def decimal_fraction_words(fraction_string)
  fraction_string.chars.map { |digit| cardinal(digit.to_i) }.join(" ")
end

.decimal_separator_wordObject



74
75
76
# File 'lib/num2words/locales/te.rb', line 74

def decimal_separator_word
  "దశాంశం"
end

.default_fraction_wordObject



66
67
68
# File 'lib/num2words/locales/te.rb', line 66

def default_fraction_word
  GRAMMAR[:default_fraction]
end

.fraction_joiner(joiner) ⇒ Object



62
63
64
# File 'lib/num2words/locales/te.rb', line 62

def fraction_joiner(joiner)
  joiner.to_sym == :and ? "మరియు" : GRAMMAR[:conjunction]
end

.fraction_numerator_feminine?Boolean

Returns:

  • (Boolean)


70
71
72
# File 'lib/num2words/locales/te.rb', line 70

def fraction_numerator_feminine?
  false
end

.integer_to_words(number, feminine: false) ⇒ Object



46
47
48
# File 'lib/num2words/locales/te.rb', line 46

def integer_to_words(number, feminine: false)
  cardinal(number)
end

.minus_wordObject



58
59
60
# File 'lib/num2words/locales/te.rb', line 58

def minus_word
  GRAMMAR[:minus]
end

.ordinal(value, format, gender: :masculine) ⇒ Object



110
111
112
113
114
115
116
117
# File 'lib/num2words/locales/te.rb', line 110

def ordinal(value, format, gender: :masculine)
  ordinals = ORDINALS[format] || ORDINALS[:default] || ORDINALS[:nominative]
  gender_data = ordinals[gender] || ordinals[:masculine]

  return gender_data[value - 1] if value.between?(1, gender_data.length)

  cardinal(value)
end

.pluralize(number, singular, _few, plural) ⇒ Object



152
153
154
# File 'lib/num2words/locales/te.rb', line 152

def pluralize(number, singular, _few, plural)
  number.abs == 1 ? singular : plural
end

.time_number_words(number, unit:) ⇒ Object



94
95
96
# File 'lib/num2words/locales/te.rb', line 94

def time_number_words(number, unit:)
  cardinal(number)
end

.time_unit_feminine?(_unit) ⇒ Boolean

Returns:

  • (Boolean)


90
91
92
# File 'lib/num2words/locales/te.rb', line 90

def time_unit_feminine?(_unit)
  false
end

.triple_to_words(number, scale_idx, feminine: false) ⇒ Object



50
51
52
53
54
55
56
# File 'lib/num2words/locales/te.rb', line 50

def triple_to_words(number, scale_idx, feminine: false)
  return [] if number.zero?

  words = [under_thousand(number)]
  words << SCALES[scale_idx][0] unless scale_idx.zero?
  words
end

.under_thousand(number) ⇒ Object



142
143
144
145
146
147
148
149
150
# File 'lib/num2words/locales/te.rb', line 142

def under_thousand(number)
  return UNDER_HUNDRED[number] if number < 100

  hundreds = number / 100
  rest = number % 100
  words = [HUNDREDS[hundreds]]
  words << UNDER_HUNDRED[rest] if rest.positive?
  words.join(" ")
end