humanize 2.1.2 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.markdown +2 -1
- data/humanize.gemspec +1 -1
- data/lib/humanize.rb +20 -16
- data/lib/humanize/locales.rb +1 -1
- data/lib/humanize/locales/constants/pt.rb +10 -0
- data/lib/humanize/locales/constants/th.rb +4 -3
- data/lib/humanize/locales/pt.rb +51 -0
- data/lib/humanize/locales/th.rb +15 -16
- data/spec/locales/pt_spec.rb +43 -0
- data/spec/locales/th_spec.rb +16 -7
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 661c151af271e0466182d921e454411bb9f498a1326ba35886593578afffda7e
|
4
|
+
data.tar.gz: 3b036215db1e2a6a426e054a8c4c83a2333e0e0b1dd5d70ec1a26ec0c16cf880
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6c2a168aba5b641544f336e17618b9f9a9e50e2e7d8356421be4b62f087ae62a94a12d6cef7f5e901fe5cfd2e63cddc3651e3e0d49caba908077cbb14e720f7
|
7
|
+
data.tar.gz: e98dce671e79a94d65263f4d743d344a79e347e8f809e8429c823d42f534978ed346a85091432f24cb42813848919fbe674c0c243fe2c232ba8da703241e2602
|
data/README.markdown
CHANGED
data/humanize.gemspec
CHANGED
data/lib/humanize.rb
CHANGED
@@ -2,18 +2,20 @@ require 'bigdecimal'
|
|
2
2
|
require_relative './humanize/locales'
|
3
3
|
|
4
4
|
module Humanize
|
5
|
+
SPACE = ' '.freeze
|
6
|
+
EMPTY = ''.freeze
|
5
7
|
# Big numbers are big: http://wiki.answers.com/Q/What_number_is_after_vigintillion&src=ansTT
|
6
8
|
|
7
9
|
def humanize(locale: Humanize.config.default_locale,
|
8
10
|
decimals_as: Humanize.config.decimals_as)
|
9
|
-
locale_class = Humanize.for_locale(locale)
|
11
|
+
locale_class, spacer = Humanize.for_locale(locale)
|
10
12
|
|
11
13
|
return locale_class::SUB_ONE_GROUPING[0] if zero?
|
12
14
|
|
13
15
|
infinity = to_f.infinite?
|
14
16
|
if infinity
|
15
17
|
infinity_word = locale_class::INFINITY
|
16
|
-
return infinity == 1 ? infinity_word : "#{locale_class::NEGATIVE}
|
18
|
+
return infinity == 1 ? infinity_word : "#{locale_class::NEGATIVE}#{spacer}#{infinity_word}"
|
17
19
|
elsif is_a?(Float) && nan?
|
18
20
|
return locale_class::UNDEFINED
|
19
21
|
end
|
@@ -21,36 +23,38 @@ module Humanize
|
|
21
23
|
sign = locale_class::NEGATIVE if negative?
|
22
24
|
|
23
25
|
parts = locale_class.new.humanize(abs)
|
24
|
-
process_decimals(locale_class, locale, parts, decimals_as)
|
25
|
-
Humanize.stringify(parts, sign)
|
26
|
+
process_decimals(locale_class, locale, parts, decimals_as, spacer)
|
27
|
+
Humanize.stringify(parts, sign, spacer)
|
26
28
|
end
|
27
29
|
|
28
30
|
def self.for_locale(locale)
|
29
31
|
case locale.to_sym
|
30
32
|
# NOTE: add locales here in ealphabetical order
|
31
33
|
when :az
|
32
|
-
Humanize::Az
|
34
|
+
[Humanize::Az, SPACE]
|
33
35
|
when :de
|
34
|
-
Humanize::De
|
36
|
+
[Humanize::De, SPACE]
|
35
37
|
when :en
|
36
|
-
Humanize::En
|
38
|
+
[Humanize::En, SPACE]
|
37
39
|
when :fr
|
38
|
-
Humanize::Fr
|
40
|
+
[Humanize::Fr, SPACE]
|
39
41
|
when :id
|
40
|
-
Humanize::Id
|
42
|
+
[Humanize::Id, SPACE]
|
43
|
+
when :pt
|
44
|
+
[Humanize::Pt, SPACE]
|
41
45
|
when :ru
|
42
|
-
Humanize::Ru
|
46
|
+
[Humanize::Ru, SPACE]
|
43
47
|
when :th
|
44
|
-
Humanize::Th
|
48
|
+
[Humanize::Th, EMPTY]
|
45
49
|
when :tr
|
46
|
-
Humanize::Tr
|
50
|
+
[Humanize::Tr, SPACE]
|
47
51
|
else
|
48
52
|
raise "Unsupported humanize locale: #{locale}"
|
49
53
|
end
|
50
54
|
end
|
51
55
|
|
52
|
-
def self.stringify(parts, sign)
|
53
|
-
output = parts.reverse.join(
|
56
|
+
def self.stringify(parts, sign, spacer)
|
57
|
+
output = parts.reverse.join(spacer).squeeze(spacer)
|
54
58
|
if sign
|
55
59
|
"#{sign} #{output}"
|
56
60
|
else
|
@@ -58,7 +62,7 @@ module Humanize
|
|
58
62
|
end
|
59
63
|
end
|
60
64
|
|
61
|
-
def process_decimals(locale_class, locale, parts, decimals_as)
|
65
|
+
def process_decimals(locale_class, locale, parts, decimals_as, spacer)
|
62
66
|
return unless is_a?(Float) || is_a?(BigDecimal)
|
63
67
|
|
64
68
|
# Why 15?
|
@@ -81,7 +85,7 @@ module Humanize
|
|
81
85
|
grouping[num.to_i]
|
82
86
|
end
|
83
87
|
|
84
|
-
(leading_zeroes + digits).join(
|
88
|
+
(leading_zeroes + digits).join(spacer)
|
85
89
|
when :number
|
86
90
|
significant_digits.to_i.humanize(locale: locale)
|
87
91
|
end
|
data/lib/humanize/locales.rb
CHANGED
@@ -0,0 +1,10 @@
|
|
1
|
+
module Humanize
|
2
|
+
class Pt
|
3
|
+
INFINITY = 'infinito'.freeze
|
4
|
+
UNDEFINED = 'indefinido'.freeze
|
5
|
+
NEGATIVE = 'negativo'.freeze
|
6
|
+
POINT = 'vírgula'.freeze
|
7
|
+
LOTS = [nil, 'mil', 'milhão', 'bilhão', 'trilhão', 'quatrilhão', 'quintilhão', 'sextilhão', 'septilhão', 'octilhão', 'nonilhão', 'decilhão', 'undecilhão', 'duodecilhão', 'tredecilhão', 'quattuordecilhão', 'quindecilhão', 'sexdecilhão', 'septendecilhão', 'octodecilhão', 'novemdecilhão', 'vigintilhão', 'unvigintilhão', 'duovigintilhão', 'trevigintilhão', 'quattuortilhão', 'quinvigintilhão', 'sexvigintilhão', 'septenvigintilhão', 'octovigintilhão', 'novemvigintilhão', 'trigintilhão', 'untrigintilhão', 'duotrigintilhão', 'trêstrigintilhão', 'quattuortrigintilhão', 'quintrigintilhão', 'sextrigintilhão', 'septentrigintilhão', 'octotrigintilhão', 'novemtrigintilhão', 'quadragintilhão', 'unquadragintilhão', 'duoquadragintilhão', 'trequadragintilhão', 'quattuorquadragintilhão', 'quinquadragintilhão', 'sesquadragintilhão', 'septenquadragintilhão', 'octoquadragintilhão', 'novenquadragintilhão', 'quinquagintilhão'].freeze
|
8
|
+
SUB_ONE_GROUPING = ['zero', 'um', 'dois', 'três', 'quatro', 'cinco', 'seis', 'sete', 'oito', 'nove', 'dez', 'onze', 'doze', 'treze', 'quatorze', 'quinze', 'dezesseis', 'dezessete', 'dezoito', 'dezenove', 'vinte', 'vinte e um', 'vinte e dois', 'vinte e três', 'vinte e quatro', 'vinte e cinco', 'vinte e seis', 'vinte e sete', 'vinte e oito', 'vinte e nove', 'trinta', 'trinta e um', 'trinta e dois', 'trinta e três', 'trinta e quatro', 'trinta e cinco', 'trinta e seis', 'trinta e sete', 'trinta e oito', 'trinta e nove', 'quarenta', 'quarenta e um', 'quarenta e dois', 'quarenta e três', 'quarenta e quatro', 'quarenta e cinco', 'quarenta e seis', 'quarenta e sete', 'quarenta e oito', 'quarenta e nove', 'cinquenta', 'cinquenta e um', 'cinquenta e dois', 'cinquenta e três', 'cinquenta e quatro', 'cinquenta e cinco', 'cinquenta e seis', 'cinquenta e sete', 'cinquenta e oito', 'cinquenta e nove', 'sessenta', 'sessenta e um', 'sessenta e dois', 'sessenta e três', 'sessenta e quatro', 'sessenta e cinco', 'sessenta e seis', 'sessenta e sete', 'sessenta e oito', 'sessenta e nove', 'setenta', 'setenta e um', 'setenta e dois', 'setenta e três', 'setenta e quatro', 'setenta e cinco', 'setenta e seis', 'setenta e sete', 'setenta e oito', 'setenta e nove', 'oitenta', 'oitenta e um', 'oitenta e dois', 'oitenta e três', 'oitenta e quatro', 'oitenta e cinco', 'oitenta e seis', 'oitenta e sete', 'oitenta e oito', 'oitenta e nove', 'noventa', 'noventa e um', 'noventa e dois', 'noventa e três', 'noventa e quatro', 'noventa e cinco', 'noventa e seis', 'noventa e sete', 'noventa e oito', 'noventa e nove', 'cem', 'cento e um', 'cento e dois', 'cento e três', 'cento e quatro', 'cento e cinco', 'cento e seis', 'cento e sete', 'cento e oito', 'cento e nove', 'cento e dez', 'cento e onze', 'cento e doze', 'cento e treze', 'cento e quatorze', 'cento e quinze', 'cento e dezesseis', 'cento e dezessete', 'cento e dezoito', 'cento e dezenove', 'cento e vinte', 'cento e vinte e um', 'cento e vinte e dois', 'cento e vinte e três', 'cento e vinte e quatro', 'cento e vinte e cinco', 'cento e vinte e seis', 'cento e vinte e sete', 'cento e vinte e oito', 'cento e vinte e nove', 'cento e trinta', 'cento e trinta e um', 'cento e trinta e dois', 'cento e trinta e três', 'cento e trinta e quatro', 'cento e trinta e cinco', 'cento e trinta e seis', 'cento e trinta e sete', 'cento e trinta e oito', 'cento e trinta e nove', 'cento e quarenta', 'cento e quarenta e um', 'cento e quarenta e dois', 'cento e quarenta e três', 'cento e quarenta e quatro', 'cento e quarenta e cinco', 'cento e quarenta e seis', 'cento e quarenta e sete', 'cento e quarenta e oito', 'cento e quarenta e nove', 'cento e cinquenta', 'cento e cinquenta e um', 'cento e cinquenta e dois', 'cento e cinquenta e três', 'cento e cinquenta e quatro', 'cento e cinquenta e cinco', 'cento e cinquenta e seis', 'cento e cinquenta e sete', 'cento e cinquenta e oito', 'cento e cinquenta e nove', 'cento e sessenta', 'cento e sessenta e um', 'cento e sessenta e dois', 'cento e sessenta e três', 'cento e sessenta e quatro', 'cento e sessenta e cinco', 'cento e sessenta e seis', 'cento e sessenta e sete', 'cento e sessenta e oito', 'cento e sessenta e nove', 'cento e setenta', 'cento e setenta e um', 'cento e setenta e dois', 'cento e setenta e três', 'cento e setenta e quatro', 'cento e setenta e cinco', 'cento e setenta e seis', 'cento e setenta e sete', 'cento e setenta e oito', 'cento e setenta e nove', 'cento e oitenta', 'cento e oitenta e um', 'cento e oitenta e dois', 'cento e oitenta e três', 'cento e oitenta e quatro', 'cento e oitenta e cinco', 'cento e oitenta e seis', 'cento e oitenta e sete', 'cento e oitenta e oito', 'cento e oitenta e nove', 'cento e noventa', 'cento e noventa e um', 'cento e noventa e dois', 'cento e noventa e três', 'cento e noventa e quatro', 'cento e noventa e cinco', 'cento e noventa e seis', 'cento e noventa e sete', 'cento e noventa e oito', 'cento e noventa e nove', 'duzentos', 'duzentos e um', 'duzentos e dois', 'duzentos e três', 'duzentos e quatro', 'duzentos e cinco', 'duzentos e seis', 'duzentos e sete', 'duzentos e oito', 'duzentos e nove', 'duzentos e dez', 'duzentos e onze', 'duzentos e doze', 'duzentos e treze', 'duzentos e quatorze', 'duzentos e quinze', 'duzentos e dezesseis', 'duzentos e dezessete', 'duzentos e dezoito', 'duzentos e dezenove', 'duzentos e vinte', 'duzentos e vinte e um', 'duzentos e vinte e dois', 'duzentos e vinte e três', 'duzentos e vinte e quatro', 'duzentos e vinte e cinco', 'duzentos e vinte e seis', 'duzentos e vinte e sete', 'duzentos e vinte e oito', 'duzentos e vinte e nove', 'duzentos e trinta', 'duzentos e trinta e um', 'duzentos e trinta e dois', 'duzentos e trinta e três', 'duzentos e trinta e quatro', 'duzentos e trinta e cinco', 'duzentos e trinta e seis', 'duzentos e trinta e sete', 'duzentos e trinta e oito', 'duzentos e trinta e nove', 'duzentos e quarenta', 'duzentos e quarenta e um', 'duzentos e quarenta e dois', 'duzentos e quarenta e três', 'duzentos e quarenta e quatro', 'duzentos e quarenta e cinco', 'duzentos e quarenta e seis', 'duzentos e quarenta e sete', 'duzentos e quarenta e oito', 'duzentos e quarenta e nove', 'duzentos e cinquenta', 'duzentos e cinquenta e um', 'duzentos e cinquenta e dois', 'duzentos e cinquenta e três', 'duzentos e cinquenta e quatro', 'duzentos e cinquenta e cinco', 'duzentos e cinquenta e seis', 'duzentos e cinquenta e sete', 'duzentos e cinquenta e oito', 'duzentos e cinquenta e nove', 'duzentos e sessenta', 'duzentos e sessenta e um', 'duzentos e sessenta e dois', 'duzentos e sessenta e três', 'duzentos e sessenta e quatro', 'duzentos e sessenta e cinco', 'duzentos e sessenta e seis', 'duzentos e sessenta e sete', 'duzentos e sessenta e oito', 'duzentos e sessenta e nove', 'duzentos e setenta', 'duzentos e setenta e um', 'duzentos e setenta e dois', 'duzentos e setenta e três', 'duzentos e setenta e quatro', 'duzentos e setenta e cinco', 'duzentos e setenta e seis', 'duzentos e setenta e sete', 'duzentos e setenta e oito', 'duzentos e setenta e nove', 'duzentos e oitenta', 'duzentos e oitenta e um', 'duzentos e oitenta e dois', 'duzentos e oitenta e três', 'duzentos e oitenta e quatro', 'duzentos e oitenta e cinco', 'duzentos e oitenta e seis', 'duzentos e oitenta e sete', 'duzentos e oitenta e oito', 'duzentos e oitenta e nove', 'duzentos e noventa', 'duzentos e noventa e um', 'duzentos e noventa e dois', 'duzentos e noventa e três', 'duzentos e noventa e quatro', 'duzentos e noventa e cinco', 'duzentos e noventa e seis', 'duzentos e noventa e sete', 'duzentos e noventa e oito', 'duzentos e noventa e nove', 'trezentos', 'trezentos e um', 'trezentos e dois', 'trezentos e três', 'trezentos e quatro', 'trezentos e cinco', 'trezentos e seis', 'trezentos e sete', 'trezentos e oito', 'trezentos e nove', 'trezentos e dez', 'trezentos e onze', 'trezentos e doze', 'trezentos e treze', 'trezentos e quatorze', 'trezentos e quinze', 'trezentos e dezesseis', 'trezentos e dezessete', 'trezentos e dezoito', 'trezentos e dezenove', 'trezentos e vinte', 'trezentos e vinte e um', 'trezentos e vinte e dois', 'trezentos e vinte e três', 'trezentos e vinte e quatro', 'trezentos e vinte e cinco', 'trezentos e vinte e seis', 'trezentos e vinte e sete', 'trezentos e vinte e oito', 'trezentos e vinte e nove', 'trezentos e trinta', 'trezentos e trinta e um', 'trezentos e trinta e dois', 'trezentos e trinta e três', 'trezentos e trinta e quatro', 'trezentos e trinta e cinco', 'trezentos e trinta e seis', 'trezentos e trinta e sete', 'trezentos e trinta e oito', 'trezentos e trinta e nove', 'trezentos e quarenta', 'trezentos e quarenta e um', 'trezentos e quarenta e dois', 'trezentos e quarenta e três', 'trezentos e quarenta e quatro', 'trezentos e quarenta e cinco', 'trezentos e quarenta e seis', 'trezentos e quarenta e sete', 'trezentos e quarenta e oito', 'trezentos e quarenta e nove', 'trezentos e cinquenta', 'trezentos e cinquenta e um', 'trezentos e cinquenta e dois', 'trezentos e cinquenta e três', 'trezentos e cinquenta e quatro', 'trezentos e cinquenta e cinco', 'trezentos e cinquenta e seis', 'trezentos e cinquenta e sete', 'trezentos e cinquenta e oito', 'trezentos e cinquenta e nove', 'trezentos e sessenta', 'trezentos e sessenta e um', 'trezentos e sessenta e dois', 'trezentos e sessenta e três', 'trezentos e sessenta e quatro', 'trezentos e sessenta e cinco', 'trezentos e sessenta e seis', 'trezentos e sessenta e sete', 'trezentos e sessenta e oito', 'trezentos e sessenta e nove', 'trezentos e setenta', 'trezentos e setenta e um', 'trezentos e setenta e dois', 'trezentos e setenta e três', 'trezentos e setenta e quatro', 'trezentos e setenta e cinco', 'trezentos e setenta e seis', 'trezentos e setenta e sete', 'trezentos e setenta e oito', 'trezentos e setenta e nove', 'trezentos e oitenta', 'trezentos e oitenta e um', 'trezentos e oitenta e dois', 'trezentos e oitenta e três', 'trezentos e oitenta e quatro', 'trezentos e oitenta e cinco', 'trezentos e oitenta e seis', 'trezentos e oitenta e sete', 'trezentos e oitenta e oito', 'trezentos e oitenta e nove', 'trezentos e noventa', 'trezentos e noventa e um', 'trezentos e noventa e dois', 'trezentos e noventa e três', 'trezentos e noventa e quatro', 'trezentos e noventa e cinco', 'trezentos e noventa e seis', 'trezentos e noventa e sete', 'trezentos e noventa e oito', 'trezentos e noventa e nove', 'quatrocentos', 'quatrocentos e um', 'quatrocentos e dois', 'quatrocentos e três', 'quatrocentos e quatro', 'quatrocentos e cinco', 'quatrocentos e seis', 'quatrocentos e sete', 'quatrocentos e oito', 'quatrocentos e nove', 'quatrocentos e dez', 'quatrocentos e onze', 'quatrocentos e doze', 'quatrocentos e treze', 'quatrocentos e quatorze', 'quatrocentos e quinze', 'quatrocentos e dezesseis', 'quatrocentos e dezessete', 'quatrocentos e dezoito', 'quatrocentos e dezenove', 'quatrocentos e vinte', 'quatrocentos e vinte e um', 'quatrocentos e vinte e dois', 'quatrocentos e vinte e três', 'quatrocentos e vinte e quatro', 'quatrocentos e vinte e cinco', 'quatrocentos e vinte e seis', 'quatrocentos e vinte e sete', 'quatrocentos e vinte e oito', 'quatrocentos e vinte e nove', 'quatrocentos e trinta', 'quatrocentos e trinta e um', 'quatrocentos e trinta e dois', 'quatrocentos e trinta e três', 'quatrocentos e trinta e quatro', 'quatrocentos e trinta e cinco', 'quatrocentos e trinta e seis', 'quatrocentos e trinta e sete', 'quatrocentos e trinta e oito', 'quatrocentos e trinta e nove', 'quatrocentos e quarenta', 'quatrocentos e quarenta e um', 'quatrocentos e quarenta e dois', 'quatrocentos e quarenta e três', 'quatrocentos e quarenta e quatro', 'quatrocentos e quarenta e cinco', 'quatrocentos e quarenta e seis', 'quatrocentos e quarenta e sete', 'quatrocentos e quarenta e oito', 'quatrocentos e quarenta e nove', 'quatrocentos e cinquenta', 'quatrocentos e cinquenta e um', 'quatrocentos e cinquenta e dois', 'quatrocentos e cinquenta e três', 'quatrocentos e cinquenta e quatro', 'quatrocentos e cinquenta e cinco', 'quatrocentos e cinquenta e seis', 'quatrocentos e cinquenta e sete', 'quatrocentos e cinquenta e oito', 'quatrocentos e cinquenta e nove', 'quatrocentos e sessenta', 'quatrocentos e sessenta e um', 'quatrocentos e sessenta e dois', 'quatrocentos e sessenta e três', 'quatrocentos e sessenta e quatro', 'quatrocentos e sessenta e cinco', 'quatrocentos e sessenta e seis', 'quatrocentos e sessenta e sete', 'quatrocentos e sessenta e oito', 'quatrocentos e sessenta e nove', 'quatrocentos e setenta', 'quatrocentos e setenta e um', 'quatrocentos e setenta e dois', 'quatrocentos e setenta e três', 'quatrocentos e setenta e quatro', 'quatrocentos e setenta e cinco', 'quatrocentos e setenta e seis', 'quatrocentos e setenta e sete', 'quatrocentos e setenta e oito', 'quatrocentos e setenta e nove', 'quatrocentos e oitenta', 'quatrocentos e oitenta e um', 'quatrocentos e oitenta e dois', 'quatrocentos e oitenta e três', 'quatrocentos e oitenta e quatro', 'quatrocentos e oitenta e cinco', 'quatrocentos e oitenta e seis', 'quatrocentos e oitenta e sete', 'quatrocentos e oitenta e oito', 'quatrocentos e oitenta e nove', 'quatrocentos e noventa', 'quatrocentos e noventa e um', 'quatrocentos e noventa e dois', 'quatrocentos e noventa e três', 'quatrocentos e noventa e quatro', 'quatrocentos e noventa e cinco', 'quatrocentos e noventa e seis', 'quatrocentos e noventa e sete', 'quatrocentos e noventa e oito', 'quatrocentos e noventa e nove', 'quinhentos', 'quinhentos e um', 'quinhentos e dois', 'quinhentos e três', 'quinhentos e quatro', 'quinhentos e cinco', 'quinhentos e seis', 'quinhentos e sete', 'quinhentos e oito', 'quinhentos e nove', 'quinhentos e dez', 'quinhentos e onze', 'quinhentos e doze', 'quinhentos e treze', 'quinhentos e quatorze', 'quinhentos e quinze', 'quinhentos e dezesseis', 'quinhentos e dezessete', 'quinhentos e dezoito', 'quinhentos e dezenove', 'quinhentos e vinte', 'quinhentos e vinte e um', 'quinhentos e vinte e dois', 'quinhentos e vinte e três', 'quinhentos e vinte e quatro', 'quinhentos e vinte e cinco', 'quinhentos e vinte e seis', 'quinhentos e vinte e sete', 'quinhentos e vinte e oito', 'quinhentos e vinte e nove', 'quinhentos e trinta', 'quinhentos e trinta e um', 'quinhentos e trinta e dois', 'quinhentos e trinta e três', 'quinhentos e trinta e quatro', 'quinhentos e trinta e cinco', 'quinhentos e trinta e seis', 'quinhentos e trinta e sete', 'quinhentos e trinta e oito', 'quinhentos e trinta e nove', 'quinhentos e quarenta', 'quinhentos e quarenta e um', 'quinhentos e quarenta e dois', 'quinhentos e quarenta e três', 'quinhentos e quarenta e quatro', 'quinhentos e quarenta e cinco', 'quinhentos e quarenta e seis', 'quinhentos e quarenta e sete', 'quinhentos e quarenta e oito', 'quinhentos e quarenta e nove', 'quinhentos e cinquenta', 'quinhentos e cinquenta e um', 'quinhentos e cinquenta e dois', 'quinhentos e cinquenta e três', 'quinhentos e cinquenta e quatro', 'quinhentos e cinquenta e cinco', 'quinhentos e cinquenta e seis', 'quinhentos e cinquenta e sete', 'quinhentos e cinquenta e oito', 'quinhentos e cinquenta e nove', 'quinhentos e sessenta', 'quinhentos e sessenta e um', 'quinhentos e sessenta e dois', 'quinhentos e sessenta e três', 'quinhentos e sessenta e quatro', 'quinhentos e sessenta e cinco', 'quinhentos e sessenta e seis', 'quinhentos e sessenta e sete', 'quinhentos e sessenta e oito', 'quinhentos e sessenta e nove', 'quinhentos e setenta', 'quinhentos e setenta e um', 'quinhentos e setenta e dois', 'quinhentos e setenta e três', 'quinhentos e setenta e quatro', 'quinhentos e setenta e cinco', 'quinhentos e setenta e seis', 'quinhentos e setenta e sete', 'quinhentos e setenta e oito', 'quinhentos e setenta e nove', 'quinhentos e oitenta', 'quinhentos e oitenta e um', 'quinhentos e oitenta e dois', 'quinhentos e oitenta e três', 'quinhentos e oitenta e quatro', 'quinhentos e oitenta e cinco', 'quinhentos e oitenta e seis', 'quinhentos e oitenta e sete', 'quinhentos e oitenta e oito', 'quinhentos e oitenta e nove', 'quinhentos e noventa', 'quinhentos e noventa e um', 'quinhentos e noventa e dois', 'quinhentos e noventa e três', 'quinhentos e noventa e quatro', 'quinhentos e noventa e cinco', 'quinhentos e noventa e seis', 'quinhentos e noventa e sete', 'quinhentos e noventa e oito', 'quinhentos e noventa e nove', 'seiscentos', 'seiscentos e um', 'seiscentos e dois', 'seiscentos e três', 'seiscentos e quatro', 'seiscentos e cinco', 'seiscentos e seis', 'seiscentos e sete', 'seiscentos e oito', 'seiscentos e nove', 'seiscentos e dez', 'seiscentos e onze', 'seiscentos e doze', 'seiscentos e treze', 'seiscentos e quatorze', 'seiscentos e quinze', 'seiscentos e dezesseis', 'seiscentos e dezessete', 'seiscentos e dezoito', 'seiscentos e dezenove', 'seiscentos e vinte', 'seiscentos e vinte e um', 'seiscentos e vinte e dois', 'seiscentos e vinte e três', 'seiscentos e vinte e quatro', 'seiscentos e vinte e cinco', 'seiscentos e vinte e seis', 'seiscentos e vinte e sete', 'seiscentos e vinte e oito', 'seiscentos e vinte e nove', 'seiscentos e trinta', 'seiscentos e trinta e um', 'seiscentos e trinta e dois', 'seiscentos e trinta e três', 'seiscentos e trinta e quatro', 'seiscentos e trinta e cinco', 'seiscentos e trinta e seis', 'seiscentos e trinta e sete', 'seiscentos e trinta e oito', 'seiscentos e trinta e nove', 'seiscentos e quarenta', 'seiscentos e quarenta e um', 'seiscentos e quarenta e dois', 'seiscentos e quarenta e três', 'seiscentos e quarenta e quatro', 'seiscentos e quarenta e cinco', 'seiscentos e quarenta e seis', 'seiscentos e quarenta e sete', 'seiscentos e quarenta e oito', 'seiscentos e quarenta e nove', 'seiscentos e cinquenta', 'seiscentos e cinquenta e um', 'seiscentos e cinquenta e dois', 'seiscentos e cinquenta e três', 'seiscentos e cinquenta e quatro', 'seiscentos e cinquenta e cinco', 'seiscentos e cinquenta e seis', 'seiscentos e cinquenta e sete', 'seiscentos e cinquenta e oito', 'seiscentos e cinquenta e nove', 'seiscentos e sessenta', 'seiscentos e sessenta e um', 'seiscentos e sessenta e dois', 'seiscentos e sessenta e três', 'seiscentos e sessenta e quatro', 'seiscentos e sessenta e cinco', 'seiscentos e sessenta e seis', 'seiscentos e sessenta e sete', 'seiscentos e sessenta e oito', 'seiscentos e sessenta e nove', 'seiscentos e setenta', 'seiscentos e setenta e um', 'seiscentos e setenta e dois', 'seiscentos e setenta e três', 'seiscentos e setenta e quatro', 'seiscentos e setenta e cinco', 'seiscentos e setenta e seis', 'seiscentos e setenta e sete', 'seiscentos e setenta e oito', 'seiscentos e setenta e nove', 'seiscentos e oitenta', 'seiscentos e oitenta e um', 'seiscentos e oitenta e dois', 'seiscentos e oitenta e três', 'seiscentos e oitenta e quatro', 'seiscentos e oitenta e cinco', 'seiscentos e oitenta e seis', 'seiscentos e oitenta e sete', 'seiscentos e oitenta e oito', 'seiscentos e oitenta e nove', 'seiscentos e noventa', 'seiscentos e noventa e um', 'seiscentos e noventa e dois', 'seiscentos e noventa e três', 'seiscentos e noventa e quatro', 'seiscentos e noventa e cinco', 'seiscentos e noventa e seis', 'seiscentos e noventa e sete', 'seiscentos e noventa e oito', 'seiscentos e noventa e nove', 'setecentos', 'setecentos e um', 'setecentos e dois', 'setecentos e três', 'setecentos e quatro', 'setecentos e cinco', 'setecentos e seis', 'setecentos e sete', 'setecentos e oito', 'setecentos e nove', 'setecentos e dez', 'setecentos e onze', 'setecentos e doze', 'setecentos e treze', 'setecentos e quatorze', 'setecentos e quinze', 'setecentos e dezesseis', 'setecentos e dezessete', 'setecentos e dezoito', 'setecentos e dezenove', 'setecentos e vinte', 'setecentos e vinte e um', 'setecentos e vinte e dois', 'setecentos e vinte e três', 'setecentos e vinte e quatro', 'setecentos e vinte e cinco', 'setecentos e vinte e seis', 'setecentos e vinte e sete', 'setecentos e vinte e oito', 'setecentos e vinte e nove', 'setecentos e trinta', 'setecentos e trinta e um', 'setecentos e trinta e dois', 'setecentos e trinta e três', 'setecentos e trinta e quatro', 'setecentos e trinta e cinco', 'setecentos e trinta e seis', 'setecentos e trinta e sete', 'setecentos e trinta e oito', 'setecentos e trinta e nove', 'setecentos e quarenta', 'setecentos e quarenta e um', 'setecentos e quarenta e dois', 'setecentos e quarenta e três', 'setecentos e quarenta e quatro', 'setecentos e quarenta e cinco', 'setecentos e quarenta e seis', 'setecentos e quarenta e sete', 'setecentos e quarenta e oito', 'setecentos e quarenta e nove', 'setecentos e cinquenta', 'setecentos e cinquenta e um', 'setecentos e cinquenta e dois', 'setecentos e cinquenta e três', 'setecentos e cinquenta e quatro', 'setecentos e cinquenta e cinco', 'setecentos e cinquenta e seis', 'setecentos e cinquenta e sete', 'setecentos e cinquenta e oito', 'setecentos e cinquenta e nove', 'setecentos e sessenta', 'setecentos e sessenta e um', 'setecentos e sessenta e dois', 'setecentos e sessenta e três', 'setecentos e sessenta e quatro', 'setecentos e sessenta e cinco', 'setecentos e sessenta e seis', 'setecentos e sessenta e sete', 'setecentos e sessenta e oito', 'setecentos e sessenta e nove', 'setecentos e setenta', 'setecentos e setenta e um', 'setecentos e setenta e dois', 'setecentos e setenta e três', 'setecentos e setenta e quatro', 'setecentos e setenta e cinco', 'setecentos e setenta e seis', 'setecentos e setenta e sete', 'setecentos e setenta e oito', 'setecentos e setenta e nove', 'setecentos e oitenta', 'setecentos e oitenta e um', 'setecentos e oitenta e dois', 'setecentos e oitenta e três', 'setecentos e oitenta e quatro', 'setecentos e oitenta e cinco', 'setecentos e oitenta e seis', 'setecentos e oitenta e sete', 'setecentos e oitenta e oito', 'setecentos e oitenta e nove', 'setecentos e noventa', 'setecentos e noventa e um', 'setecentos e noventa e dois', 'setecentos e noventa e três', 'setecentos e noventa e quatro', 'setecentos e noventa e cinco', 'setecentos e noventa e seis', 'setecentos e noventa e sete', 'setecentos e noventa e oito', 'setecentos e noventa e nove', 'oitocentos', 'oitocentos e um', 'oitocentos e dois', 'oitocentos e três', 'oitocentos e quatro', 'oitocentos e cinco', 'oitocentos e seis', 'oitocentos e sete', 'oitocentos e oito', 'oitocentos e nove', 'oitocentos e dez', 'oitocentos e onze', 'oitocentos e doze', 'oitocentos e treze', 'oitocentos e quatorze', 'oitocentos e quinze', 'oitocentos e dezesseis', 'oitocentos e dezessete', 'oitocentos e dezoito', 'oitocentos e dezenove', 'oitocentos e vinte', 'oitocentos e vinte e um', 'oitocentos e vinte e dois', 'oitocentos e vinte e três', 'oitocentos e vinte e quatro', 'oitocentos e vinte e cinco', 'oitocentos e vinte e seis', 'oitocentos e vinte e sete', 'oitocentos e vinte e oito', 'oitocentos e vinte e nove', 'oitocentos e trinta', 'oitocentos e trinta e um', 'oitocentos e trinta e dois', 'oitocentos e trinta e três', 'oitocentos e trinta e quatro', 'oitocentos e trinta e cinco', 'oitocentos e trinta e seis', 'oitocentos e trinta e sete', 'oitocentos e trinta e oito', 'oitocentos e trinta e nove', 'oitocentos e quarenta', 'oitocentos e quarenta e um', 'oitocentos e quarenta e dois', 'oitocentos e quarenta e três', 'oitocentos e quarenta e quatro', 'oitocentos e quarenta e cinco', 'oitocentos e quarenta e seis', 'oitocentos e quarenta e sete', 'oitocentos e quarenta e oito', 'oitocentos e quarenta e nove', 'oitocentos e cinquenta', 'oitocentos e cinquenta e um', 'oitocentos e cinquenta e dois', 'oitocentos e cinquenta e três', 'oitocentos e cinquenta e quatro', 'oitocentos e cinquenta e cinco', 'oitocentos e cinquenta e seis', 'oitocentos e cinquenta e sete', 'oitocentos e cinquenta e oito', 'oitocentos e cinquenta e nove', 'oitocentos e sessenta', 'oitocentos e sessenta e um', 'oitocentos e sessenta e dois', 'oitocentos e sessenta e três', 'oitocentos e sessenta e quatro', 'oitocentos e sessenta e cinco', 'oitocentos e sessenta e seis', 'oitocentos e sessenta e sete', 'oitocentos e sessenta e oito', 'oitocentos e sessenta e nove', 'oitocentos e setenta', 'oitocentos e setenta e um', 'oitocentos e setenta e dois', 'oitocentos e setenta e três', 'oitocentos e setenta e quatro', 'oitocentos e setenta e cinco', 'oitocentos e setenta e seis', 'oitocentos e setenta e sete', 'oitocentos e setenta e oito', 'oitocentos e setenta e nove', 'oitocentos e oitenta', 'oitocentos e oitenta e um', 'oitocentos e oitenta e dois', 'oitocentos e oitenta e três', 'oitocentos e oitenta e quatro', 'oitocentos e oitenta e cinco', 'oitocentos e oitenta e seis', 'oitocentos e oitenta e sete', 'oitocentos e oitenta e oito', 'oitocentos e oitenta e nove', 'oitocentos e noventa', 'oitocentos e noventa e um', 'oitocentos e noventa e dois', 'oitocentos e noventa e três', 'oitocentos e noventa e quatro', 'oitocentos e noventa e cinco', 'oitocentos e noventa e seis', 'oitocentos e noventa e sete', 'oitocentos e noventa e oito', 'oitocentos e noventa e nove', 'novecentos', 'novecentos e um', 'novecentos e dois', 'novecentos e três', 'novecentos e quatro', 'novecentos e cinco', 'novecentos e seis', 'novecentos e sete', 'novecentos e oito', 'novecentos e nove', 'novecentos e dez', 'novecentos e onze', 'novecentos e doze', 'novecentos e treze', 'novecentos e quatorze', 'novecentos e quinze', 'novecentos e dezesseis', 'novecentos e dezessete', 'novecentos e dezoito', 'novecentos e dezenove', 'novecentos e vinte', 'novecentos e vinte e um', 'novecentos e vinte e dois', 'novecentos e vinte e três', 'novecentos e vinte e quatro', 'novecentos e vinte e cinco', 'novecentos e vinte e seis', 'novecentos e vinte e sete', 'novecentos e vinte e oito', 'novecentos e vinte e nove', 'novecentos e trinta', 'novecentos e trinta e um', 'novecentos e trinta e dois', 'novecentos e trinta e três', 'novecentos e trinta e quatro', 'novecentos e trinta e cinco', 'novecentos e trinta e seis', 'novecentos e trinta e sete', 'novecentos e trinta e oito', 'novecentos e trinta e nove', 'novecentos e quarenta', 'novecentos e quarenta e um', 'novecentos e quarenta e dois', 'novecentos e quarenta e três', 'novecentos e quarenta e quatro', 'novecentos e quarenta e cinco', 'novecentos e quarenta e seis', 'novecentos e quarenta e sete', 'novecentos e quarenta e oito', 'novecentos e quarenta e nove', 'novecentos e cinquenta', 'novecentos e cinquenta e um', 'novecentos e cinquenta e dois', 'novecentos e cinquenta e três', 'novecentos e cinquenta e quatro', 'novecentos e cinquenta e cinco', 'novecentos e cinquenta e seis', 'novecentos e cinquenta e sete', 'novecentos e cinquenta e oito', 'novecentos e cinquenta e nove', 'novecentos e sessenta', 'novecentos e sessenta e um', 'novecentos e sessenta e dois', 'novecentos e sessenta e três', 'novecentos e sessenta e quatro', 'novecentos e sessenta e cinco', 'novecentos e sessenta e seis', 'novecentos e sessenta e sete', 'novecentos e sessenta e oito', 'novecentos e sessenta e nove', 'novecentos e setenta', 'novecentos e setenta e um', 'novecentos e setenta e dois', 'novecentos e setenta e três', 'novecentos e setenta e quatro', 'novecentos e setenta e cinco', 'novecentos e setenta e seis', 'novecentos e setenta e sete', 'novecentos e setenta e oito', 'novecentos e setenta e nove', 'novecentos e oitenta', 'novecentos e oitenta e um', 'novecentos e oitenta e dois', 'novecentos e oitenta e três', 'novecentos e oitenta e quatro', 'novecentos e oitenta e cinco', 'novecentos e oitenta e seis', 'novecentos e oitenta e sete', 'novecentos e oitenta e oito', 'novecentos e oitenta e nove', 'novecentos e noventa', 'novecentos e noventa e um', 'novecentos e noventa e dois', 'novecentos e noventa e três', 'novecentos e noventa e quatro', 'novecentos e noventa e cinco', 'novecentos e noventa e seis', 'novecentos e noventa e sete', 'novecentos e noventa e oito', 'novecentos e noventa e nove'].freeze
|
9
|
+
end
|
10
|
+
end
|
@@ -1,10 +1,11 @@
|
|
1
1
|
module Humanize
|
2
2
|
class Th
|
3
3
|
POINT = "จุด".freeze
|
4
|
-
INFINITY = '
|
4
|
+
INFINITY = 'เป็นอนันต์'.freeze
|
5
5
|
UNDEFINED = 'ไม่ได้กำหนด'.freeze
|
6
|
-
NEGATIVE = '
|
7
|
-
|
6
|
+
NEGATIVE = 'ติดลบ'.freeze
|
7
|
+
MILLION = 'ล้าน'.freeze
|
8
|
+
LOTS = [nil, 'ร้อย', 'พัน', 'หมื่น', 'แสน', MILLION].freeze
|
8
9
|
SUB_ONE_GROUPING = ['ศูนย์', 'หนึ่ง', 'สอง', 'สาม', 'สี่', 'ห้า', 'หก', 'เจ็ด', 'แปด', 'เก้า', 'สิบ', 'สิบเอ็ด', 'สิบสอง', 'สิบสาม', 'สิบสี่', 'สิบห้า', 'สิบหก', 'สิบเจ็ด', 'สิบแปด', 'สิบเก้า', 'ยี่สิบ', 'ยี่สิบเอ็ด', 'ยี่สิบสอง', 'ยี่สิบสาม', 'ยี่สิบสี่', 'ยี่สิบห้า', 'ยี่สิบหก', 'ยี่สิบเจ็ด', 'ยี่สิบแปด', 'ยี่สิบเก้า', 'สามสิบ', 'สามสิบเอ็ด', 'สามสิบสอง', 'สามสิบสาม', 'สามสิบสี่', 'สามสิบห้า', 'สามสิบหก', 'สามสิบเจ็ด', 'สามสิบแปด', 'สามสิบเก้า', 'สี่สิบ', 'สี่สิบเอ็ด', 'สี่สิบสอง', 'สี่สิบสาม', 'สี่สิบสี่', 'สี่สิบห้า', 'สี่สิบหก', 'สี่สิบเจ็ด', 'สี่สิบแปด', 'สี่สิบเก้า', 'ห้าสิบ', 'ห้าสิบเอ็ด', 'ห้าสิบสอง', 'ห้าสิบสาม', 'ห้าสิบสี่', 'ห้าสิบห้า', 'ห้าสิบหก', 'ห้าสิบเจ็ด', 'ห้าสิบแปด', 'ห้าสิบเก้า', 'หกสิบ', 'หกสิบเอ็ด', 'หกสิบสอง', 'หกสิบสาม', 'หกสิบสี่', 'หกสิบห้า', 'หกสิบหก', 'หกสิบเจ็ด', 'หกสิบแปด', 'หกสิบเก้า', 'เจ็ดสิบ', 'เจ็ดสิบเอ็ด', 'เจ็ดสิบสอง', 'เจ็ดสิบสาม', 'เจ็ดสิบสี่', 'เจ็ดสิบห้า', 'เจ็ดสิบหก', 'เจ็ดสิบเจ็ด', 'เจ็ดสิบแปด', 'เจ็ดสิบเก้า', 'แปดสิบ', 'แปดสิบเอ็ด', 'แปดสิบสอง', 'แปดสิบสาม', 'แปดสิบสี่', 'แปดสิบห้า', 'แปดสิบหก', 'แปดสิบเจ็ด', 'สิบแปดคน', 'แปดสิบเก้า', 'เก้าสิบ', 'เก้าสิบเอ็ด', 'เก้าสิบสอง', 'เก้าสิบสาม', 'เก้าสิบสี่', 'เก้าสิบห้า', 'เก้าสิบหก', 'เก้าสิบเจ็ด', 'เก้าสิบแปด', 'เก้าสิบเก้า'].freeze
|
9
10
|
end
|
10
11
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require_relative 'constants/pt'
|
2
|
+
|
3
|
+
module Humanize
|
4
|
+
class Pt
|
5
|
+
def humanize(number)
|
6
|
+
iteration = 0
|
7
|
+
parts = []
|
8
|
+
use_and = false
|
9
|
+
until number.zero?
|
10
|
+
number, remainder = number.divmod(1000)
|
11
|
+
plural = remainder > 1
|
12
|
+
unless remainder.zero?
|
13
|
+
if iteration.zero? && remainder < 100
|
14
|
+
use_and = true
|
15
|
+
else
|
16
|
+
add_grouping(parts, use_and, iteration, plural)
|
17
|
+
end
|
18
|
+
|
19
|
+
parts << SUB_ONE_GROUPING[remainder] unless one_thousand?(remainder, parts)
|
20
|
+
end
|
21
|
+
|
22
|
+
iteration += 1
|
23
|
+
end
|
24
|
+
|
25
|
+
parts
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def one_thousand?(remainder, parts)
|
31
|
+
remainder == 1 && (parts.last.to_s.strip == 'mil' || parts.last.to_s.strip == 'mil e')
|
32
|
+
end
|
33
|
+
|
34
|
+
def conjunction(parts, use_and)
|
35
|
+
return '' if parts.empty?
|
36
|
+
|
37
|
+
use_and ? ' e' : ', '
|
38
|
+
end
|
39
|
+
|
40
|
+
def add_grouping(parts, use_and, iteration, plural)
|
41
|
+
grouping = LOTS[iteration]
|
42
|
+
return unless grouping
|
43
|
+
|
44
|
+
if plural
|
45
|
+
grouping.sub! 'lhão', 'lhões'
|
46
|
+
end
|
47
|
+
|
48
|
+
parts << "#{grouping}#{conjunction(parts, use_and)}"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/lib/humanize/locales/th.rb
CHANGED
@@ -2,21 +2,26 @@ require_relative 'constants/th'
|
|
2
2
|
|
3
3
|
module Humanize
|
4
4
|
class Th
|
5
|
-
def humanize(number)
|
5
|
+
def humanize(number, million_level = 1)
|
6
|
+
if number >= 10_000_000
|
7
|
+
number, remainder = number.divmod(1_000_000)
|
8
|
+
million_parts = humanize(number, million_level + 1)
|
9
|
+
sub_million_parts = million_humanize(remainder)
|
10
|
+
sub_million_parts << " " << MILLION * million_level << million_parts.reverse
|
11
|
+
else
|
12
|
+
million_humanize(number)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def million_humanize(number)
|
6
17
|
number_groups = [100, 10]
|
7
18
|
number_grouping = number_groups.shift
|
8
19
|
iteration = 0
|
9
20
|
parts = []
|
10
|
-
use_and = false
|
11
21
|
until number.zero?
|
12
22
|
number, remainder = number.divmod(number_grouping)
|
13
23
|
unless remainder.zero?
|
14
|
-
|
15
|
-
use_and = true
|
16
|
-
else
|
17
|
-
add_grouping(parts, use_and, iteration)
|
18
|
-
end
|
19
|
-
|
24
|
+
add_grouping(parts, iteration) unless iteration.zero? && remainder < (number_grouping / 10)
|
20
25
|
parts << SUB_ONE_GROUPING[remainder]
|
21
26
|
end
|
22
27
|
|
@@ -29,17 +34,11 @@ module Humanize
|
|
29
34
|
|
30
35
|
private
|
31
36
|
|
32
|
-
def
|
33
|
-
return '' if parts.empty? && !use_and
|
34
|
-
|
35
|
-
' และ'
|
36
|
-
end
|
37
|
-
|
38
|
-
def add_grouping(parts, use_and, iteration)
|
37
|
+
def add_grouping(parts, iteration)
|
39
38
|
grouping = LOTS[iteration]
|
40
39
|
return unless grouping
|
41
40
|
|
42
|
-
parts <<
|
41
|
+
parts << grouping
|
43
42
|
end
|
44
43
|
end
|
45
44
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Humanize, "pt locale" do
|
4
|
+
before do
|
5
|
+
Humanize.configure do |config|
|
6
|
+
config.default_locale = :pt
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
tests = [
|
11
|
+
[8.15, 'oito vírgula um cinco'],
|
12
|
+
[1000, 'mil'],
|
13
|
+
[1002, 'mil e dois'],
|
14
|
+
[2000, 'dois mil'],
|
15
|
+
[2002, 'dois mil e um'],
|
16
|
+
[10_000, 'dez mil']
|
17
|
+
]
|
18
|
+
|
19
|
+
tests.each do |num, output|
|
20
|
+
it "#{num} equals #{output}" do
|
21
|
+
expect(num.humanize).to eql(output)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'decimals: number' do
|
26
|
+
it 'returns the decimals as whole numbers' do
|
27
|
+
num = 8.15
|
28
|
+
expect(num.humanize(decimals_as: :number)).to eq('oito vírgula quinze')
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe 'when called on conceptual number' do
|
33
|
+
it 'reads correctly' do
|
34
|
+
inf = Float::INFINITY
|
35
|
+
neg_inf = -inf
|
36
|
+
nan = inf + neg_inf
|
37
|
+
|
38
|
+
expect(inf.humanize).to eql('infinito')
|
39
|
+
expect(neg_inf.humanize).to eql('infinito negativo')
|
40
|
+
expect(nan.humanize).to eql('indefinido')
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/spec/locales/th_spec.rb
CHANGED
@@ -7,12 +7,21 @@ RSpec.describe Humanize, "th locale" do
|
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
|
+
# rubocop:disable Metrics/LineLength
|
10
11
|
tests = [
|
11
|
-
[8.15, '
|
12
|
-
[
|
13
|
-
[
|
14
|
-
[
|
12
|
+
[8.15, 'แปดจุดหนึ่งห้า'],
|
13
|
+
[101, 'หนึ่งร้อยหนึ่ง'],
|
14
|
+
[1002, 'หนึ่งพันสอง'],
|
15
|
+
[1202, 'หนึ่งพันสองร้อยสอง'],
|
16
|
+
[1220, 'หนึ่งพันสองร้อยยี่สิบ'],
|
17
|
+
[2001, 'สองพันหนึ่ง'],
|
18
|
+
[10_000, 'หนึ่งหมื่น'],
|
19
|
+
[9_209_002, 'เก้าล้านสองแสนเก้าพันสอง'],
|
20
|
+
[11_230_782, 'สิบเอ็ดล้าน สองแสนสามหมื่นเจ็ดร้อยแปดสิบสอง'],
|
21
|
+
[987_654_321_123_230_782, 'เก้าแสนแปดหมื่นเจ็ดพันหกร้อยห้าสิบสี่ล้านล้าน สามแสนสองหมื่นหนึ่งพันหนึ่งร้อยยี่สิบสามล้าน สองแสนสามหมื่นเจ็ดร้อยแปดสิบสอง'],
|
22
|
+
[444_333_221_111_112_176_514_321_007_310, 'สี่แสนสี่หมื่นสี่พันสามร้อยสามสิบสามล้านล้านล้านล้าน สองแสนสองหมื่นหนึ่งพันหนึ่งร้อยสิบเอ็ดล้านล้านล้าน หนึ่งแสนหนึ่งหมื่นสองพันหนึ่งร้อยเจ็ดสิบหกล้านล้าน ห้าแสนหนึ่งหมื่นสี่พันสามร้อยยี่สิบเอ็ดล้าน เจ็ดพันสามร้อยสิบ']
|
15
23
|
]
|
24
|
+
# rubocop:enable Metrics/LineLength
|
16
25
|
|
17
26
|
tests.each do |num, output|
|
18
27
|
it "#{num} equals #{output}" do
|
@@ -23,7 +32,7 @@ RSpec.describe Humanize, "th locale" do
|
|
23
32
|
context 'decimals: number' do
|
24
33
|
it 'returns the decimals as whole numbers' do
|
25
34
|
num = 8.15
|
26
|
-
expect(num.humanize(decimals_as: :number)).to eq('
|
35
|
+
expect(num.humanize(decimals_as: :number)).to eq('แปดจุดสิบห้า')
|
27
36
|
end
|
28
37
|
end
|
29
38
|
|
@@ -33,8 +42,8 @@ RSpec.describe Humanize, "th locale" do
|
|
33
42
|
neg_inf = -inf
|
34
43
|
nan = inf + neg_inf
|
35
44
|
|
36
|
-
expect(inf.humanize).to eql('
|
37
|
-
expect(neg_inf.humanize).to eql('
|
45
|
+
expect(inf.humanize).to eql('เป็นอนันต์')
|
46
|
+
expect(neg_inf.humanize).to eql('ติดลบเป็นอนันต์')
|
38
47
|
expect(nan.humanize).to eql('ไม่ได้กำหนด')
|
39
48
|
end
|
40
49
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: humanize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jack Chen
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-10-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mutant
|
@@ -106,6 +106,7 @@ files:
|
|
106
106
|
- lib/humanize/locales/constants/en.rb
|
107
107
|
- lib/humanize/locales/constants/fr.rb
|
108
108
|
- lib/humanize/locales/constants/id.rb
|
109
|
+
- lib/humanize/locales/constants/pt.rb
|
109
110
|
- lib/humanize/locales/constants/ru.rb
|
110
111
|
- lib/humanize/locales/constants/th.rb
|
111
112
|
- lib/humanize/locales/constants/tr.rb
|
@@ -113,6 +114,7 @@ files:
|
|
113
114
|
- lib/humanize/locales/en.rb
|
114
115
|
- lib/humanize/locales/fr.rb
|
115
116
|
- lib/humanize/locales/id.rb
|
117
|
+
- lib/humanize/locales/pt.rb
|
116
118
|
- lib/humanize/locales/ru.rb
|
117
119
|
- lib/humanize/locales/th.rb
|
118
120
|
- lib/humanize/locales/tr.rb
|
@@ -123,6 +125,7 @@ files:
|
|
123
125
|
- spec/locales/en_spec.rb
|
124
126
|
- spec/locales/fr_spec.rb
|
125
127
|
- spec/locales/id_spec.rb
|
128
|
+
- spec/locales/pt_spec.rb
|
126
129
|
- spec/locales/ru_spec.rb
|
127
130
|
- spec/locales/th_spec.rb
|
128
131
|
- spec/locales/tr_spec.rb
|
@@ -157,6 +160,7 @@ test_files:
|
|
157
160
|
- spec/locales/en_spec.rb
|
158
161
|
- spec/locales/fr_spec.rb
|
159
162
|
- spec/locales/id_spec.rb
|
163
|
+
- spec/locales/pt_spec.rb
|
160
164
|
- spec/locales/ru_spec.rb
|
161
165
|
- spec/locales/th_spec.rb
|
162
166
|
- spec/locales/tr_spec.rb
|