brnumeros 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG ADDED
File without changes
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2008 [name of plugin creator]
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README ADDED
@@ -0,0 +1 @@
1
+ Aqui vai o README.
data/Rakefile ADDED
@@ -0,0 +1,97 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rake/testtask'
4
+ require 'rake/rdoctask'
5
+ require 'rake/packagetask'
6
+ require 'rake/gempackagetask'
7
+ require 'rake/contrib/sshpublisher'
8
+ require File.join(File.dirname(__FILE__), 'lib', 'brnumeros', 'version')
9
+
10
+ PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : ''
11
+ PKG_NAME = 'brnumeros'
12
+ PKG_VERSION = BrNumeros::VERSION::STRING + PKG_BUILD
13
+ PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
14
+
15
+ RELEASE_NAME = "REL #{PKG_VERSION}"
16
+
17
+ RUBY_FORGE_PROJECT = "brnumeros"
18
+ RUBY_FORGE_USER = "tapajos"
19
+
20
+ desc "Default Task"
21
+ task :default => [ :test ]
22
+
23
+ # Run the unit tests
24
+ Rake::TestTask.new { |t|
25
+ t.libs << "test"
26
+ t.pattern = 'test/*_test.rb'
27
+ t.verbose = true
28
+ t.warning = false
29
+ }
30
+
31
+
32
+ #Generate the RDoc documentation
33
+ Rake::RDocTask.new { |rdoc|
34
+ rdoc.rdoc_dir = 'doc'
35
+ rdoc.title = "Brazilian Rails -- Números"
36
+ rdoc.options << '--line-numbers' << '--inline-source' << '-A cattr_accessor=object'
37
+ rdoc.options << '--charset' << 'utf-8'
38
+ rdoc.template = "#{ENV['template']}.rb" if ENV['template']
39
+ rdoc.rdoc_files.include('README', 'CHANGELOG')
40
+ rdoc.rdoc_files.include('lib/**/*')
41
+ }
42
+
43
+
44
+
45
+ # Create compressed packages
46
+ spec = Gem::Specification.new do |s|
47
+ s.platform = Gem::Platform::RUBY
48
+ s.name = PKG_NAME
49
+ s.summary = "brnumeros é uma das gems que compoem o Brazilian Rails"
50
+ s.description = %q{brnumeros é uma das gems que compoem o Brazilian Rails}
51
+ s.version = PKG_VERSION
52
+
53
+ s.authors = ["Marcos Tapajós", "Celestino Gomes", "Andre Kupkosvki", "Vinícius Teles"]
54
+ s.email = "tapajos@gmail.com"
55
+ s.rubyforge_project = "brnumeros"
56
+ s.homepage = "http://www.improveit.com.br/software_livre/brazilian_rails"
57
+
58
+ s.has_rdoc = true
59
+ s.requirements << 'none'
60
+ s.require_path = 'lib'
61
+ # s.autorequire = 'brnumeros'
62
+
63
+ s.files = [ "Rakefile", "README", "CHANGELOG", "MIT-LICENSE" ]
64
+ s.files = s.files + Dir.glob( "lib/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
65
+ s.files = s.files + Dir.glob( "test/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
66
+ end
67
+
68
+ Rake::GemPackageTask.new(spec) do |p|
69
+ p.gem_spec = spec
70
+ p.need_tar = true
71
+ p.need_zip = true
72
+ end
73
+
74
+
75
+ # desc "Publish the API documentation"
76
+ # task :pgem => [:package] do
77
+ # Rake::SshFilePublisher.new("wrath.rubyonrails.org", "public_html/gems/gems", "pkg", "#{PKG_FILE_NAME}.gem").upload
78
+ # end
79
+ #
80
+ # desc "Publish the API documentation"
81
+ # task :pdoc => [:rdoc] do
82
+ # Rake::SshDirPublisher.new("wrath.rubyonrails.org", "public_html/am", "doc").upload
83
+ # end
84
+ #
85
+
86
+ desc "Publish the release files to RubyForge."
87
+ task :release => [ :package ] do
88
+ require 'rubyforge'
89
+ require 'rake/contrib/rubyforgepublisher'
90
+
91
+ packages = %w( gem tgz zip ).collect{ |ext| "pkg/#{PKG_NAME}-#{PKG_VERSION}.#{ext}" }
92
+
93
+ rubyforge = RubyForge.new
94
+ rubyforge.configure
95
+ rubyforge.login
96
+ rubyforge.add_release(PKG_NAME, PKG_NAME, "REL #{PKG_VERSION}", *packages)
97
+ end
@@ -0,0 +1,162 @@
1
+ module Extenso
2
+ @@unidade = {
3
+ 0 => "zero",
4
+ 1 => "um",
5
+ 2 => "dois",
6
+ 3 => "três",
7
+ 4 => "quatro",
8
+ 5 => "cinco",
9
+ 6 => "seis",
10
+ 7 => "sete",
11
+ 8 => "oito",
12
+ 9 => "nove"
13
+ }
14
+ @@dezena = {
15
+ 10 => "dez",
16
+ 11 => "onze",
17
+ 12 => "doze",
18
+ 13 => "treze",
19
+ 14 => "quatorze",
20
+ 15 => "quinze",
21
+ 16 => "dezesseis",
22
+ 17 => "dezessete",
23
+ 18 => "dezoito",
24
+ 19 => "dezenove",
25
+ 20 => "vinte",
26
+ 30 => "trinta",
27
+ 40 => "quarenta",
28
+ 50 => "cinquenta",
29
+ 60 => "sessenta",
30
+ 70 => "setenta",
31
+ 80 => "oitenta",
32
+ 90 => "noventa" }
33
+ @@centena = {100 => "cento",
34
+ 200 => "duzentos",
35
+ 300 => "trezentos",
36
+ 400 => "quatrocentos",
37
+ 500 => "quinhentos",
38
+ 600 => "seiscentos",
39
+ 700 => "setecentos",
40
+ 800 => "oitocentos",
41
+ 900 => "novecentos" }
42
+
43
+ # Escreve o numero por extenso.
44
+ #
45
+ # Exemplo:
46
+ # 1.por_extenso ==> 'um'
47
+ # 100.por_extenso ==> 'cem'
48
+ # 158.por_extenso ==> 'cento e cinquenta e oito'
49
+ def por_extenso
50
+ Extenso.por_extenso(self)
51
+ end
52
+
53
+ # Alias para o metodo por_extenso
54
+ alias_method :to_extenso, :por_extenso
55
+
56
+ # Escreve o numero por extenso.
57
+ #
58
+ # Exemplo:
59
+ # Extenso.por_extenso(1) ==> "um"
60
+ # Extenso.por_extenso(100) ==> "cem"
61
+ # Extenso.por_extenso(158) ==> "cento e cinquenta e oito"
62
+ def Extenso.por_extenso(numero)
63
+ negativo=(numero<0)?"menos ":""
64
+ n=numero.to_i.abs
65
+ return case n
66
+ when 0..9: negativo + @@unidade[n].to_s
67
+ when 10..19: negativo + @@dezena[n].to_s
68
+ when 20..99:
69
+ v=n % 10
70
+ if v== 0
71
+ negativo + @@dezena[n].to_s
72
+ else
73
+ "#{negativo}#{@@dezena[n-v]} e #{por_extenso(v)}"
74
+ end
75
+ when 100
76
+ negativo+"cem"
77
+ when 101..999
78
+ v=n % 100
79
+ if v== 0
80
+ negativo + @@centena[n].to_s
81
+ else
82
+ "#{negativo}#{@@centena[n-v]} e #{por_extenso(v)}"
83
+ end
84
+ when 1000..999999
85
+ m,c=n/1000,n%1000
86
+ %(#{negativo}#{por_extenso(m)} mil#{c > 0 ? " e #{por_extenso(c)}":''})
87
+ when 1_000_000..999_999_999
88
+ mi,m=n/1_000_000,n%1_000_000
89
+ %(#{negativo}#{por_extenso(mi)} milh#{mi > 1 ? 'ões':'ão'}#{m > 0 ? " e #{por_extenso(m)}" : ''})
90
+ when 1_000_000_000..999_999_999_999
91
+ bi,mi=n/1_000_000_000,n%1_000_000_000
92
+ %(#{negativo}#{por_extenso(bi)} bilh#{bi > 1 ? 'ões':'ão'}#{mi > 0 ? " e #{por_extenso(mi)}" : ''})
93
+ when 1_000_000_000_000..999_999_999_999_999
94
+ tri,bi=n/1_000_000_000_000,n%1_000_000_000_000
95
+ %(#{negativo}#{por_extenso(tri)} trilh#{tri > 1 ? 'ões':'ão'}#{bi > 0 ? " e #{por_extenso(bi)}" : ''})
96
+ else
97
+ raise "Valor excede o permitido: #{n}"
98
+ end
99
+ end
100
+ end
101
+
102
+ module ExtensoReal
103
+ include Extenso
104
+
105
+ # Escreve por extenso em reais.
106
+ #
107
+ # Exemplo:
108
+ # 1.por_extenso_em_reais ==> 'um real'
109
+ # (100.58).por_extenso_em_reais ==> 'cem reais e cinquenta e oito centavos'
110
+ def por_extenso_em_reais
111
+ ExtensoReal.por_extenso_em_reais(self)
112
+ end
113
+
114
+ # Alias para por_extenso_em_reais
115
+ alias_method :to_extenso_real, :por_extenso_em_reais
116
+
117
+ # Escreve o numero por extenso em reais.
118
+ #
119
+ # Exemplo:
120
+ # Extenso.por_extenso_em_reais(1) ==> "um real"
121
+ # Extenso.por_extenso_em_reais(100) ==> "cem reais"
122
+ # Extenso.por_extenso_em_reais(100.58) ==> "cem reais e cinquenta e oito centavos"
123
+ def ExtensoReal.por_extenso_em_reais(valor)
124
+ negativo=(valor<0)?" negativo":""
125
+ negativos=(valor<0)?" negativos":""
126
+ valor = valor.abs
127
+ return 'grátis' if valor == 0
128
+ case valor
129
+ when Integer
130
+ extenso = Extenso.por_extenso(valor)
131
+ if extenso =~ /^(.*)(ão$|ões$)/
132
+ complemento = 'de '
133
+ else
134
+ complemento = ''
135
+ end
136
+ %(#{extenso} #{valor <= 1 ? "real#{negativo}": "#{complemento}reais#{negativos}"})
137
+ when Float
138
+ real,cents=("%.2f" % valor).split(/\./).map{ |m| m.to_i}
139
+ valor_cents=Extenso.por_extenso(cents%100)
140
+ valor_cents+= case cents.to_i%100
141
+ when 0: ""
142
+ when 1: " centavo"
143
+ when 2..99: " centavos"
144
+ end
145
+
146
+ if real.to_i > 0
147
+ "#{ExtensoReal.por_extenso_em_reais(real.to_i)}#{cents > 0 ? ' e ' + valor_cents + negativos : real.to_i > 1 ? negativos : negativo }"
148
+ else
149
+ if (cents.to_i%100)==1
150
+ "#{valor_cents}#{negativo}"
151
+ else
152
+ "#{valor_cents}#{negativos}"
153
+ end
154
+ end
155
+ else
156
+ ExtensoReal.por_extenso_em_reais(valor.to_s.strip.gsub(/[^\d]/,'.').to_f)
157
+ end
158
+ end
159
+ end
160
+
161
+ Numeric.send(:include, ExtensoReal)
162
+
@@ -0,0 +1,9 @@
1
+ module BrNumeros
2
+ module VERSION #:nodoc:
3
+ MAJOR = 0
4
+ MINOR = 0
5
+ TINY = 1
6
+
7
+ STRING = [MAJOR, MINOR, TINY].join('.')
8
+ end
9
+ end
data/lib/brnumeros.rb ADDED
@@ -0,0 +1,7 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ %w(number_portuguese version).each {|req| require File.dirname(__FILE__) + "/brnumeros/#{req}"}
5
+
6
+ module BrNumeros
7
+ end
@@ -0,0 +1,356 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class NumberTest < Test::Unit::TestCase
4
+ def test_unidades
5
+ assert_equal 'zero', 0.por_extenso
6
+ assert_equal 'um', 1.por_extenso
7
+ assert_equal 'dois', 2.por_extenso
8
+ assert_equal 'três', 3.por_extenso
9
+ assert_equal 'quatro', 4.por_extenso
10
+ assert_equal 'cinco', 5.por_extenso
11
+ assert_equal 'seis', 6.por_extenso
12
+ assert_equal 'sete', 7.por_extenso
13
+ assert_equal 'oito', 8.por_extenso
14
+ assert_equal 'nove', 9.por_extenso
15
+ end
16
+
17
+ def test_dezenas
18
+ assert_equal 'dez', 10.por_extenso
19
+ assert_equal 'onze', 11.por_extenso
20
+ assert_equal 'doze', 12.por_extenso
21
+ assert_equal 'treze', 13.por_extenso
22
+ assert_equal 'quatorze', 14.por_extenso
23
+ assert_equal 'quinze', 15.por_extenso
24
+ assert_equal 'dezesseis', 16.por_extenso
25
+ assert_equal 'dezessete', 17.por_extenso
26
+ assert_equal 'dezoito', 18.por_extenso
27
+ assert_equal 'dezenove', 19.por_extenso
28
+ assert_equal 'vinte', 20.por_extenso
29
+ assert_equal 'trinta', 30.por_extenso
30
+ assert_equal 'quarenta', 40.por_extenso
31
+ assert_equal 'cinquenta', 50.por_extenso
32
+ assert_equal 'sessenta', 60.por_extenso
33
+ assert_equal 'setenta', 70.por_extenso
34
+ assert_equal 'oitenta', 80.por_extenso
35
+ assert_equal 'noventa', 90.por_extenso
36
+ end
37
+
38
+ def test_dezenas_com_unidades
39
+ assert_equal 'vinte e um', 21.por_extenso
40
+ assert_equal 'trinta e dois', 32.por_extenso
41
+ assert_equal 'quarenta e três', 43.por_extenso
42
+ assert_equal 'cinquenta e quatro', 54.por_extenso
43
+ assert_equal 'sessenta e cinco', 65.por_extenso
44
+ assert_equal 'setenta e seis', 76.por_extenso
45
+ assert_equal 'oitenta e sete', 87.por_extenso
46
+ assert_equal 'noventa e oito', 98.por_extenso
47
+ end
48
+
49
+ def test_centenas
50
+ assert_equal 'cem', 100.por_extenso
51
+ assert_equal 'duzentos', 200.por_extenso
52
+ assert_equal 'trezentos', 300.por_extenso
53
+ assert_equal 'quatrocentos', 400.por_extenso
54
+ assert_equal 'quinhentos', 500.por_extenso
55
+ assert_equal 'seiscentos', 600.por_extenso
56
+ assert_equal 'setecentos', 700.por_extenso
57
+ assert_equal 'oitocentos', 800.por_extenso
58
+ assert_equal 'novecentos', 900.por_extenso
59
+ end
60
+
61
+ def test_centenas_com_dezenas_e_unidades
62
+ assert_equal 'cento e um', 101.por_extenso
63
+ assert_equal 'cento e dez', 110.por_extenso
64
+ assert_equal 'cento e onze', 111.por_extenso
65
+
66
+ assert_equal 'duzentos e dois', 202.por_extenso
67
+ assert_equal 'duzentos e vinte', 220.por_extenso
68
+ assert_equal 'duzentos e vinte e dois', 222.por_extenso
69
+
70
+ assert_equal 'trezentos e três', 303.por_extenso
71
+ assert_equal 'trezentos e trinta', 330.por_extenso
72
+ assert_equal 'trezentos e trinta e três', 333.por_extenso
73
+
74
+ assert_equal 'quatrocentos e quatro', 404.por_extenso
75
+ assert_equal 'quatrocentos e quarenta', 440.por_extenso
76
+ assert_equal 'quatrocentos e quarenta e quatro', 444.por_extenso
77
+
78
+ assert_equal 'quinhentos e cinco', 505.por_extenso
79
+ assert_equal 'quinhentos e cinquenta', 550.por_extenso
80
+ assert_equal 'quinhentos e cinquenta e cinco', 555.por_extenso
81
+
82
+ assert_equal 'seiscentos e seis', 606.por_extenso
83
+ assert_equal 'seiscentos e sessenta', 660.por_extenso
84
+ assert_equal 'seiscentos e sessenta e seis', 666.por_extenso
85
+
86
+ assert_equal 'setecentos e sete', 707.por_extenso
87
+ assert_equal 'setecentos e setenta', 770.por_extenso
88
+ assert_equal 'setecentos e setenta e sete', 777.por_extenso
89
+
90
+ assert_equal 'oitocentos e oito', 808.por_extenso
91
+ assert_equal 'oitocentos e oitenta', 880.por_extenso
92
+ assert_equal 'oitocentos e oitenta e oito', 888.por_extenso
93
+
94
+ assert_equal 'novecentos e nove', 909.por_extenso
95
+ assert_equal 'novecentos e noventa', 990.por_extenso
96
+ assert_equal 'novecentos e noventa e nove', 999.por_extenso
97
+ end
98
+
99
+ def test_mil
100
+ assert_equal 'um mil', 1_000.por_extenso
101
+ assert_equal 'um mil e um', 1_001.por_extenso
102
+ assert_equal 'um mil e dez', 1_010.por_extenso
103
+ assert_equal 'um mil e onze', 1_011.por_extenso
104
+ assert_equal 'um mil e cem', 1_100.por_extenso
105
+ assert_equal 'um mil e cento e um', 1_101.por_extenso
106
+ assert_equal 'um mil e cento e dez', 1_110.por_extenso
107
+ assert_equal 'um mil e cento e onze', 1_111.por_extenso
108
+ assert_equal 'dez mil', 10_000.por_extenso
109
+ assert_equal 'cem mil', 100_000.por_extenso
110
+ assert_equal 'cento e dez mil', 110_000.por_extenso
111
+ end
112
+
113
+ def test_milhao
114
+ assert_equal 'um milhão', 1_000_000.por_extenso
115
+ assert_equal 'um milhão e um mil e um', 1_001_001.por_extenso
116
+ assert_equal 'um milhão e dez mil e dez', 1_010_010.por_extenso
117
+ assert_equal 'um milhão e onze mil e onze', 1_011_011.por_extenso
118
+ assert_equal 'um milhão e cem mil e cem', 1_100_100.por_extenso
119
+ assert_equal 'um milhão e cento e um mil e cento e um', 1_101_101.por_extenso
120
+ assert_equal 'um milhão e cento e dez mil e cento e dez', 1_110_110.por_extenso
121
+ assert_equal 'um milhão e cento e onze mil e cento e onze', 1_111_111.por_extenso
122
+ assert_equal 'dez milhões', 10_000_000.por_extenso
123
+ assert_equal 'cem milhões', 100_000_000.por_extenso
124
+ assert_equal 'cento e dez milhões', 110_000_000.por_extenso
125
+ end
126
+
127
+ def test_bilhao
128
+ assert_equal 'um bilhão', 1_000_000_000.por_extenso
129
+ assert_equal 'um bilhão e um milhão e um mil e um', 1_001_001_001.por_extenso
130
+ assert_equal 'um bilhão e dez milhões e dez mil e dez', 1_010_010_010.por_extenso
131
+ assert_equal 'um bilhão e onze milhões e onze mil e onze', 1_011_011_011.por_extenso
132
+ assert_equal 'um bilhão e cem milhões e cem mil e cem', 1_100_100_100.por_extenso
133
+ assert_equal 'um bilhão e cento e um milhões e cento e um mil e cento e um', 1_101_101_101.por_extenso
134
+ assert_equal 'um bilhão e cento e dez milhões e cento e dez mil e cento e dez', 1_110_110_110.por_extenso
135
+ assert_equal 'um bilhão e cento e onze milhões e cento e onze mil e cento e onze', 1_111_111_111.por_extenso
136
+ assert_equal 'dez bilhões', 10_000_000_000.por_extenso
137
+ assert_equal 'cem bilhões', 100_000_000_000.por_extenso
138
+ assert_equal 'cento e dez bilhões', 110_000_000_000.por_extenso
139
+ end
140
+
141
+ def test_trilhao
142
+ assert_equal 'um trilhão', 1_000_000_000_000.por_extenso
143
+ assert_equal 'um trilhão e um bilhão e um milhão e um mil e um', 1_001_001_001_001.por_extenso
144
+ assert_equal 'um trilhão e dez bilhões e dez milhões e dez mil e dez', 1_010_010_010_010.por_extenso
145
+ assert_equal 'um trilhão e onze bilhões e onze milhões e onze mil e onze', 1_011_011_011_011.por_extenso
146
+ assert_equal 'um trilhão e cem bilhões e cem milhões e cem mil e cem', 1_100_100_100_100.por_extenso
147
+ assert_equal 'um trilhão e cento e um bilhões e cento e um milhões e cento e um mil e cento e um', 1_101_101_101_101.por_extenso
148
+ assert_equal 'um trilhão e cento e dez bilhões e cento e dez milhões e cento e dez mil e cento e dez', 1_110_110_110_110.por_extenso
149
+ assert_equal 'um trilhão e cento e onze bilhões e cento e onze milhões e cento e onze mil e cento e onze', 1_111_111_111_111.por_extenso
150
+ assert_equal 'dez trilhões', 10_000_000_000_000.por_extenso
151
+ assert_equal 'cem trilhões', 100_000_000_000_000.por_extenso
152
+ assert_equal 'cento e dez trilhões', 110_000_000_000_000.por_extenso
153
+ end
154
+
155
+ def test_numero_maior_que_trilhao_eh_rejetaido
156
+ begin
157
+ 1_000_000_000_000_000.por_extenso
158
+ raise "Deveria lançar RuntimeError com mensagem 'Valor excede o permitido'"
159
+ rescue RuntimeError => e
160
+ assert_equal RuntimeError, e.class
161
+ assert_equal 'Valor excede o permitido: 1000000000000000', e.message
162
+ end
163
+ end
164
+
165
+ def test_valores_em_real
166
+ assert_equal 'grátis', 0.por_extenso_em_reais
167
+ assert_equal 'um centavo', 0.01.por_extenso_em_reais
168
+ assert_equal 'dois centavos', 0.02.por_extenso_em_reais
169
+ assert_equal 'vinte e um centavos', 0.21.por_extenso_em_reais
170
+ assert_equal 'um real', 1.00.por_extenso_em_reais
171
+ assert_equal 'um real', 1.por_extenso_em_reais
172
+ assert_equal 'um real e um centavo', 1.01.por_extenso_em_reais
173
+ assert_equal 'um real e dois centavos', 1.02.por_extenso_em_reais
174
+ assert_equal 'um milhão de reais e um centavo', 1_000_000.01.por_extenso_em_reais
175
+ assert_equal 'dois milhões de reais e um centavo', 2_000_000.01.por_extenso_em_reais
176
+ assert_equal 'dois milhões e duzentos reais e um centavo', 2_000_200.01.por_extenso_em_reais
177
+ assert_equal 'um bilhão de reais e um centavo', 1_000_000_000.01.por_extenso_em_reais
178
+ assert_equal 'um trilhão de reais e um centavo', 1_000_000_000_000.01.por_extenso_em_reais
179
+ assert_equal 'cento e vinte e oito mil e duzentos e quarenta e três reais e vinte e oito centavos', 128_243.28.por_extenso_em_reais
180
+ assert_equal 'oitenta e dois mil e trezentos e oitenta e nove reais e dezenove centavos', 82_389.19.por_extenso_em_reais
181
+ assert_equal 'dois mil e trezentos e quarenta e sete reais e vinte e oito centavos', 2_347.28.por_extenso_em_reais
182
+ assert_equal 'noventa e dois mil e trezentos e setenta e dois reais e oitenta e seis centavos', 92_372.86.por_extenso_em_reais
183
+ end
184
+
185
+ def test_unidades_negativas
186
+ assert_equal 'zero', -0.por_extenso #Aha, tentou me pegar :)
187
+ assert_equal 'menos um', -1.por_extenso
188
+ assert_equal 'menos dois', -2.por_extenso
189
+ assert_equal 'menos três', -3.por_extenso
190
+ assert_equal 'menos quatro', -4.por_extenso
191
+ assert_equal 'menos cinco', -5.por_extenso
192
+ assert_equal 'menos seis', -6.por_extenso
193
+ assert_equal 'menos sete', -7.por_extenso
194
+ assert_equal 'menos oito', -8.por_extenso
195
+ assert_equal 'menos nove', -9.por_extenso
196
+ end
197
+
198
+ def test_dezenas_negativas
199
+ assert_equal 'menos dez', -10.por_extenso
200
+ assert_equal 'menos onze', -11.por_extenso
201
+ assert_equal 'menos doze', -12.por_extenso
202
+ assert_equal 'menos treze', -13.por_extenso
203
+ assert_equal 'menos quatorze', -14.por_extenso
204
+ assert_equal 'menos quinze', -15.por_extenso
205
+ assert_equal 'menos dezesseis', -16.por_extenso
206
+ assert_equal 'menos dezessete', -17.por_extenso
207
+ assert_equal 'menos dezoito', -18.por_extenso
208
+ assert_equal 'menos dezenove', -19.por_extenso
209
+ assert_equal 'menos vinte', -20.por_extenso
210
+ assert_equal 'menos trinta', -30.por_extenso
211
+ assert_equal 'menos quarenta', -40.por_extenso
212
+ assert_equal 'menos cinquenta', -50.por_extenso
213
+ assert_equal 'menos sessenta', -60.por_extenso
214
+ assert_equal 'menos setenta', -70.por_extenso
215
+ assert_equal 'menos oitenta', -80.por_extenso
216
+ assert_equal 'menos noventa', -90.por_extenso
217
+ end
218
+
219
+ def test_dezenas_com_unidades_negativas
220
+ assert_equal 'menos vinte e um', -21.por_extenso
221
+ assert_equal 'menos trinta e dois', -32.por_extenso
222
+ assert_equal 'menos quarenta e três', -43.por_extenso
223
+ assert_equal 'menos cinquenta e quatro', -54.por_extenso
224
+ assert_equal 'menos sessenta e cinco', -65.por_extenso
225
+ assert_equal 'menos setenta e seis', -76.por_extenso
226
+ assert_equal 'menos oitenta e sete', -87.por_extenso
227
+ assert_equal 'menos noventa e oito', -98.por_extenso
228
+ end
229
+
230
+ def test_centenas_negativas
231
+ assert_equal 'menos cem', -100.por_extenso
232
+ assert_equal 'menos duzentos', -200.por_extenso
233
+ assert_equal 'menos trezentos', -300.por_extenso
234
+ assert_equal 'menos quatrocentos', -400.por_extenso
235
+ assert_equal 'menos quinhentos', -500.por_extenso
236
+ assert_equal 'menos seiscentos', -600.por_extenso
237
+ assert_equal 'menos setecentos', -700.por_extenso
238
+ assert_equal 'menos oitocentos', -800.por_extenso
239
+ assert_equal 'menos novecentos', -900.por_extenso
240
+ end
241
+
242
+ def test_centenas_com_dezenas_e_unidades_negativas
243
+ assert_equal 'menos cento e um', -101.por_extenso
244
+ assert_equal 'menos cento e dez', -110.por_extenso
245
+ assert_equal 'menos cento e onze', -111.por_extenso
246
+
247
+ assert_equal 'menos duzentos e dois', -202.por_extenso
248
+ assert_equal 'menos duzentos e vinte', -220.por_extenso
249
+ assert_equal 'menos duzentos e vinte e dois', -222.por_extenso
250
+
251
+ assert_equal 'menos trezentos e três', -303.por_extenso
252
+ assert_equal 'menos trezentos e trinta', -330.por_extenso
253
+ assert_equal 'menos trezentos e trinta e três', -333.por_extenso
254
+
255
+ assert_equal 'menos quatrocentos e quatro', -404.por_extenso
256
+ assert_equal 'menos quatrocentos e quarenta', -440.por_extenso
257
+ assert_equal 'menos quatrocentos e quarenta e quatro', -444.por_extenso
258
+
259
+ assert_equal 'menos quinhentos e cinco', -505.por_extenso
260
+ assert_equal 'menos quinhentos e cinquenta', -550.por_extenso
261
+ assert_equal 'menos quinhentos e cinquenta e cinco', -555.por_extenso
262
+
263
+ assert_equal 'menos seiscentos e seis', -606.por_extenso
264
+ assert_equal 'menos seiscentos e sessenta', -660.por_extenso
265
+ assert_equal 'menos seiscentos e sessenta e seis', -666.por_extenso
266
+
267
+ assert_equal 'menos setecentos e sete', -707.por_extenso
268
+ assert_equal 'menos setecentos e setenta', -770.por_extenso
269
+ assert_equal 'menos setecentos e setenta e sete', -777.por_extenso
270
+
271
+ assert_equal 'menos oitocentos e oito', -808.por_extenso
272
+ assert_equal 'menos oitocentos e oitenta', -880.por_extenso
273
+ assert_equal 'menos oitocentos e oitenta e oito', -888.por_extenso
274
+
275
+ assert_equal 'menos novecentos e nove', -909.por_extenso
276
+ assert_equal 'menos novecentos e noventa', -990.por_extenso
277
+ assert_equal 'menos novecentos e noventa e nove', -999.por_extenso
278
+ end
279
+
280
+ def test_mil_negativo
281
+ assert_equal 'menos um mil', -1_000.por_extenso
282
+ assert_equal 'menos um mil e um', -1_001.por_extenso
283
+ assert_equal 'menos um mil e dez', -1_010.por_extenso
284
+ assert_equal 'menos um mil e onze', -1_011.por_extenso
285
+ assert_equal 'menos um mil e cem', -1_100.por_extenso
286
+ assert_equal 'menos um mil e cento e um', -1_101.por_extenso
287
+ assert_equal 'menos um mil e cento e dez', -1_110.por_extenso
288
+ assert_equal 'menos um mil e cento e onze', -1_111.por_extenso
289
+ assert_equal 'menos dez mil', -10_000.por_extenso
290
+ assert_equal 'menos cem mil', -100_000.por_extenso
291
+ assert_equal 'menos cento e dez mil', -110_000.por_extenso
292
+ end
293
+
294
+ def test_milhao_negativo
295
+ assert_equal 'menos um milhão', -1_000_000.por_extenso
296
+ assert_equal 'menos um milhão e um mil e um', -1_001_001.por_extenso
297
+ assert_equal 'menos um milhão e dez mil e dez', -1_010_010.por_extenso
298
+ assert_equal 'menos um milhão e onze mil e onze', -1_011_011.por_extenso
299
+ assert_equal 'menos um milhão e cem mil e cem', -1_100_100.por_extenso
300
+ assert_equal 'menos um milhão e cento e um mil e cento e um', -1_101_101.por_extenso
301
+ assert_equal 'menos um milhão e cento e dez mil e cento e dez', -1_110_110.por_extenso
302
+ assert_equal 'menos um milhão e cento e onze mil e cento e onze', -1_111_111.por_extenso
303
+ assert_equal 'menos dez milhões', -10_000_000.por_extenso
304
+ assert_equal 'menos cem milhões', -100_000_000.por_extenso
305
+ assert_equal 'menos cento e dez milhões', -110_000_000.por_extenso
306
+ end
307
+
308
+ def test_bilhao_negativo
309
+ assert_equal 'menos um bilhão', -1_000_000_000.por_extenso
310
+ assert_equal 'menos um bilhão e um milhão e um mil e um', -1_001_001_001.por_extenso
311
+ assert_equal 'menos um bilhão e dez milhões e dez mil e dez', -1_010_010_010.por_extenso
312
+ assert_equal 'menos um bilhão e onze milhões e onze mil e onze', -1_011_011_011.por_extenso
313
+ assert_equal 'menos um bilhão e cem milhões e cem mil e cem', -1_100_100_100.por_extenso
314
+ assert_equal 'menos um bilhão e cento e um milhões e cento e um mil e cento e um', -1_101_101_101.por_extenso
315
+ assert_equal 'menos um bilhão e cento e dez milhões e cento e dez mil e cento e dez', -1_110_110_110.por_extenso
316
+ assert_equal 'menos um bilhão e cento e onze milhões e cento e onze mil e cento e onze', -1_111_111_111.por_extenso
317
+ assert_equal 'menos dez bilhões', -10_000_000_000.por_extenso
318
+ assert_equal 'menos cem bilhões', -100_000_000_000.por_extenso
319
+ assert_equal 'menos cento e dez bilhões', -110_000_000_000.por_extenso
320
+ end
321
+
322
+ def test_trilhao_negativo
323
+ assert_equal 'menos um trilhão', -1_000_000_000_000.por_extenso
324
+ assert_equal 'menos um trilhão e um bilhão e um milhão e um mil e um', -1_001_001_001_001.por_extenso
325
+ assert_equal 'menos um trilhão e dez bilhões e dez milhões e dez mil e dez', -1_010_010_010_010.por_extenso
326
+ assert_equal 'menos um trilhão e onze bilhões e onze milhões e onze mil e onze', -1_011_011_011_011.por_extenso
327
+ assert_equal 'menos um trilhão e cem bilhões e cem milhões e cem mil e cem', -1_100_100_100_100.por_extenso
328
+ assert_equal 'menos um trilhão e cento e um bilhões e cento e um milhões e cento e um mil e cento e um', -1_101_101_101_101.por_extenso
329
+ assert_equal 'menos um trilhão e cento e dez bilhões e cento e dez milhões e cento e dez mil e cento e dez', -1_110_110_110_110.por_extenso
330
+ assert_equal 'menos um trilhão e cento e onze bilhões e cento e onze milhões e cento e onze mil e cento e onze', -1_111_111_111_111.por_extenso
331
+ assert_equal 'menos dez trilhões', -10_000_000_000_000.por_extenso
332
+ assert_equal 'menos cem trilhões', -100_000_000_000_000.por_extenso
333
+ assert_equal 'menos cento e dez trilhões', -110_000_000_000_000.por_extenso
334
+ end
335
+
336
+ def test_valores_em_real_negativos
337
+ assert_equal 'grátis', -0.por_extenso_em_reais #grátis é grátis
338
+ assert_equal 'um centavo negativo', -0.01.por_extenso_em_reais
339
+ assert_equal 'dois centavos negativos', -0.02.por_extenso_em_reais
340
+ assert_equal 'vinte e um centavos negativos', -0.21.por_extenso_em_reais
341
+ assert_equal 'um real negativo', -1.00.por_extenso_em_reais
342
+ assert_equal 'um real negativo', -1.por_extenso_em_reais
343
+ assert_equal 'um real e um centavo negativos', -1.01.por_extenso_em_reais
344
+ assert_equal 'um real e dois centavos negativos', -1.02.por_extenso_em_reais
345
+ assert_equal 'um milhão de reais e um centavo negativos', -1_000_000.01.por_extenso_em_reais
346
+ assert_equal 'dois milhões de reais e um centavo negativos', -2_000_000.01.por_extenso_em_reais
347
+ assert_equal 'dois milhões e duzentos reais e um centavo negativos', -2_000_200.01.por_extenso_em_reais
348
+ assert_equal 'um bilhão de reais e um centavo negativos', -1_000_000_000.01.por_extenso_em_reais
349
+ assert_equal 'um trilhão de reais e um centavo negativos', -1_000_000_000_000.01.por_extenso_em_reais
350
+ assert_equal 'cento e vinte e oito mil e duzentos e quarenta e três reais e vinte e oito centavos negativos', -128_243.28.por_extenso_em_reais
351
+ assert_equal 'oitenta e dois mil e trezentos e oitenta e nove reais e dezenove centavos negativos', -82_389.19.por_extenso_em_reais
352
+ assert_equal 'dois mil e trezentos e quarenta e sete reais e vinte e oito centavos negativos', -2_347.28.por_extenso_em_reais
353
+ assert_equal 'noventa e dois mil e trezentos e setenta e dois reais e oitenta e seis centavos negativos', -92_372.86.por_extenso_em_reais
354
+ end
355
+
356
+ end
@@ -0,0 +1,15 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../lib/brnumeros'
3
+
4
+ def tornar_metodos_publicos(clazz)
5
+ clazz.class_eval do
6
+ private_instance_methods.each { |instance_method| public instance_method }
7
+ private_methods.each { |method| public_class_method method }
8
+ end
9
+ end
10
+
11
+ def p80 text
12
+ p '*'*80
13
+ p text
14
+ yield if block_given?
15
+ end
metadata ADDED
@@ -0,0 +1,65 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: brnumeros
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - "Marcos Tapaj\xC3\xB3s"
8
+ - Celestino Gomes
9
+ - Andre Kupkosvki
10
+ - "Vin\xC3\xADcius Teles"
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+
15
+ date: 2008-07-06 00:00:00 -03:00
16
+ default_executable:
17
+ dependencies: []
18
+
19
+ description: "brnumeros \xC3\xA9 uma das gems que compoem o Brazilian Rails"
20
+ email: tapajos@gmail.com
21
+ executables: []
22
+
23
+ extensions: []
24
+
25
+ extra_rdoc_files: []
26
+
27
+ files:
28
+ - Rakefile
29
+ - README
30
+ - CHANGELOG
31
+ - MIT-LICENSE
32
+ - lib/brnumeros
33
+ - lib/brnumeros/number_portuguese.rb
34
+ - lib/brnumeros/version.rb
35
+ - lib/brnumeros.rb
36
+ - test/number_test.rb
37
+ - test/test_helper.rb
38
+ has_rdoc: true
39
+ homepage: http://www.improveit.com.br/software_livre/brazilian_rails
40
+ post_install_message:
41
+ rdoc_options: []
42
+
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: "0"
50
+ version:
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: "0"
56
+ version:
57
+ requirements:
58
+ - none
59
+ rubyforge_project: brnumeros
60
+ rubygems_version: 1.2.0
61
+ signing_key:
62
+ specification_version: 2
63
+ summary: "brnumeros \xC3\xA9 uma das gems que compoem o Brazilian Rails"
64
+ test_files: []
65
+