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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c53770e1f8fb4728330960c23fb73ec0ebcbee252a96abe2a300377428101b33
4
- data.tar.gz: 19dc482ebfcb3fa5b4039005ff683f00c5de47800d668c5bb3238155bb696d6e
3
+ metadata.gz: 661c151af271e0466182d921e454411bb9f498a1326ba35886593578afffda7e
4
+ data.tar.gz: 3b036215db1e2a6a426e054a8c4c83a2333e0e0b1dd5d70ec1a26ec0c16cf880
5
5
  SHA512:
6
- metadata.gz: 9de7cfea67e9d40cb50977b5e78b689f785ebdffa4dde7964f72418f9f3adfde58147e8015a85997e1bcbc8bffabb4dedf4b336a54250e0e20bf71acca8e7b9f
7
- data.tar.gz: 999923efdecd66480d6af20c924018c7e4d7cea0c2ddc9648a23ed9ae7ed835b2d8a51376f61056572f93a1dd0448ef09e4536a0cc2633d14d721ce63e41377a
6
+ metadata.gz: e6c2a168aba5b641544f336e17618b9f9a9e50e2e7d8356421be4b62f087ae62a94a12d6cef7f5e901fe5cfd2e63cddc3651e3e0d49caba908077cbb14e720f7
7
+ data.tar.gz: e98dce671e79a94d65263f4d743d344a79e347e8f809e8429c823d42f534978ed346a85091432f24cb42813848919fbe674c0c243fe2c232ba8da703241e2602
@@ -88,8 +88,9 @@ Currently supported locales:
88
88
  * Azerbaijani `:az`
89
89
  * German: `:de`
90
90
  * Indonesian: `:id`
91
- * Thai: `:th` (up to single-digit millions)
91
+ * Thai: `:th`
92
92
  * Russian: `:ru` (except for decimals)
93
+ * Portuguese: `:pt`
93
94
 
94
95
  ## Testing
95
96
 
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "humanize"
3
- s.version = "2.1.2"
3
+ s.version = "2.2.0"
4
4
 
5
5
  s.required_ruby_version = '>= 2.3'
6
6
  s.require_paths = ["lib"]
@@ -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} #{infinity_word}"
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(' ').squeeze(' ')
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
@@ -1,5 +1,5 @@
1
1
  module Humanize
2
- %w[az de en fr id ru th tr].each do |locale|
2
+ %w[az de en fr id pt ru th tr].each do |locale|
3
3
  autoload locale.capitalize.to_sym, "humanize/locales/#{locale}.rb"
4
4
  end
5
5
  end
@@ -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 = 'ความไม่มีที่สิ้นสุด'.freeze
4
+ INFINITY = 'เป็นอนันต์'.freeze
5
5
  UNDEFINED = 'ไม่ได้กำหนด'.freeze
6
- NEGATIVE = 'เชิงลบ'.freeze
7
- LOTS = [nil, 'ร้อย', 'พัน', 'หมื่น', 'แสน', 'ล้าน'].freeze
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
@@ -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
- if iteration.zero? && remainder < (number_grouping / 10)
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 conjunction(parts, use_and)
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 << "#{grouping}#{conjunction(parts, use_and)}"
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
@@ -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
- [1002, 'หนึ่ง พัน และ สอง'],
13
- [2001, 'สอง พัน และ หนึ่ง'],
14
- [10_000, 'หนึ่ง หมื่น']
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.1.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-09-05 00:00:00.000000000 Z
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