monto_escrito 1.0.0 → 1.0.2

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
  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