monto_escrito 1.0.0 → 1.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 531120575aa60bf6128ea3723d8842c96325d3f8
4
- data.tar.gz: 248577fa1223229137313d453bc3805ebe3c56c0
3
+ metadata.gz: 8c8818f882dec2fb998a1bd6e1faad21f5339ba5
4
+ data.tar.gz: 14bd17a183ca4a3a3a4800b91406a4e974e92464
5
5
  SHA512:
6
- metadata.gz: c8857dc09ff77ebf98104032fe500b0f188a691b12eb72a6b137f84dc561771ae5ad56fb4d46170f0fd492ac5dc9855cb9e6703e9cb23e8c0467c7c99680d95d
7
- data.tar.gz: ab2cc0b51f32b7b8c0cf9c5f7d4e4d273ff0061c7c2817a5921ddcf0ac10cae20c0d5f60065354e4625335df6b730853df0e4a249e2188ff51def2635b13ddc5
6
+ metadata.gz: 783b012995e3bdd9551b782cf96450f5be60478f2a8abad1deab37470cf9958613b9fbe13149d463cbda967cea9b822ea9a1dc99e01632622ac3fd7b0a10b931
7
+ data.tar.gz: 17436fe4405fd92ddae6bae8040891d89cf6b5cd8b69d8246764c6c3a9ce47dd7ffa627899726b055b44ccf071463818ec9c3a5ca2e66ffd84cb525be4ea76e6
data/README.md CHANGED
@@ -24,6 +24,10 @@ Para convertir una cantidad a palabras, simplemente hay que utilizar el método
24
24
  => "diez"
25
25
  irb(main):002:0> MontoEscrito::Decorador.new(14).to_s
26
26
  => "catorce"
27
+ irb(main):003:0> MontoEscrito::Decorador.new(14.50).to_s(:short)
28
+ => "catorce con 50/100"
29
+ irb(main):003:0> MontoEscrito::Decorador.new(14.50).to_s(:long)
30
+ => "catorce con cincuenta"
27
31
 
28
32
  Esta forma permite interpolar las conversiones:
29
33
 
@@ -44,5 +48,7 @@ Esta forma permite interpolar las conversiones:
44
48
  ## Change Log
45
49
 
46
50
 
51
+ * `monto_escrito-1.0.2`: Se implementa formato `:long` para los decimales.
52
+ * `monto_escrito-1.0.1`: Se implementa formato `:short` para los decimales.
47
53
  * `monto_escrito-1.0.0`: Se implementa una API basada en un objeto decorador, permitiendo interpolar llamadas.
48
54
  * `monto_escrito-0.0.1`: Se utiliza la primera API que opera como helper
@@ -6,26 +6,36 @@ module MontoEscrito
6
6
  @numero = numero
7
7
  end
8
8
 
9
- def to_s
10
- @monto_escrito ||= calcular_monto_escrito
9
+ def to_s(format=:integer)
10
+ if (format == :integer)
11
+ @monto_escrito ||= calcular_monto_escrito(@numero)
12
+ else
13
+ centavos = (@numero - @numero.floor) * 100
14
+ @numero = @numero.floor
15
+ if (format == :short)
16
+ @monto_escrito ||= "#{calcular_monto_escrito(@numero)} con #{centavos.to_i}/100"
17
+ else
18
+ @monto_escrito ||= "#{calcular_monto_escrito(@numero)} con #{calcular_monto_escrito(centavos)}"
19
+ end
20
+ end
11
21
  end
12
22
 
13
23
  private
14
24
 
15
- def calcular_monto_escrito
25
+ def calcular_monto_escrito(numero)
16
26
 
17
- if casos_especiales[@numero]
18
- monto_escrito = casos_especiales[@numero]
27
+ if casos_especiales[numero]
28
+ monto_escrito = casos_especiales[numero]
19
29
  else
20
30
 
21
31
  monto_escrito = ''
22
32
 
23
33
  casos.each do |caso, detalles|
24
- if @numero >= caso
25
- valor = (@numero.to_i / detalles[:divisor]) * detalles[:multiplicador_primario]
26
- monto_escrito += Decorador.new(valor).to_s + detalles[:sufijo]
27
- @numero -= valor * detalles[:multiplicador_secundario]
28
- if @numero > 0
34
+ if numero >= caso
35
+ valor = (numero.to_i / detalles[:divisor]) * detalles[:multiplicador_primario]
36
+ monto_escrito += calcular_monto_escrito(valor) + detalles[:sufijo]
37
+ numero -= valor * detalles[:multiplicador_secundario]
38
+ if numero > 0
29
39
  monto_escrito += detalles[:continuacion]
30
40
  end
31
41
  end
@@ -1,3 +1,3 @@
1
1
  module MontoEscrito
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.2"
3
3
  end
@@ -3,13 +3,13 @@ require File.expand_path("lib/monto_escrito/decorador.rb")
3
3
 
4
4
  describe MontoEscrito::Decorador do
5
5
 
6
- def convertir(numero)
7
- MontoEscrito::Decorador.new(numero).to_s
6
+ def convertir(numero, formato)
7
+ MontoEscrito::Decorador.new(numero).to_s(formato)
8
8
  end
9
9
 
10
- def verificar_conversiones(numeros)
10
+ def verificar_conversiones(numeros, formato = :integer)
11
11
  numeros.each { |numero, letras|
12
- convertir(numero).must_equal letras
12
+ convertir(numero, formato).must_equal letras
13
13
  }
14
14
  end
15
15
 
@@ -202,4 +202,26 @@ describe MontoEscrito::Decorador do
202
202
  proc {MontoEscrito::Decorador.new(numero)}.must_raise(ArgumentError)
203
203
  end
204
204
 
205
+ it "imprime decimales en formato :short" do
206
+
207
+ decimales = {
208
+ 0.25 => 'cero con 25/100',
209
+ 1.50 => 'un con 50/100',
210
+ 2.75 => 'dos con 75/100'
211
+ }
212
+
213
+ verificar_conversiones(decimales, :short)
214
+ end
215
+
216
+ it "imprime decimales en formato :long" do
217
+
218
+ decimales = {
219
+ 0.25 => 'cero con veinticinco',
220
+ 1.50 => 'un con cincuenta',
221
+ 2.75 => 'dos con setenta y cinco'
222
+ }
223
+
224
+ verificar_conversiones(decimales, :long)
225
+ end
226
+
205
227
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: monto_escrito
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucas Videla
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-11 00:00:00.000000000 Z
11
+ date: 2014-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler