lib/extensobr.rb in extensobr-1.2.1 vs lib/extensobr.rb in extensobr-1.2.2
- old
+ new
@@ -227,12 +227,12 @@
raise "[Exceção em Extenso.numero] Parâmetro 'valor' é nulo" if Settings&.extensobr_settings&.dig(:raise_for_nil) == 'true'
return 'Zero'
end
- unless int?(valor) && !valor.nil?
- "[Exceção em Extenso.numero] Parâmetro 'valor' não é numérico (recebido: '#{valor}')"
+ unless valor.is_a?(Integer) && !valor.nil?
+ raise "[Exceção em Extenso.numero] Parâmetro 'valor' deve ser um número inteiro, (recebido: #{valor})"
end
if valor <= 0
'Zero'
elsif valor > VALOR_MAXIMO
@@ -458,22 +458,32 @@
end
end
# Gera o valor em formato de Real
#
- # Exemplo:
+ # Exemplo +:
# Extenso.real_formatado(10) - R$ 10,00
# Extenso.real_formatado(1.55) - R$ 1,55
- #
+ # Exemplo -:
+ # Extenso.real_formatado(10.555) - R$ 10,55
+ # Extenso.real_formatado(1000.555) - R$ 1.000,55
# @params[Object]
def self.real_formatado(valor)
+ positive = true
+ if valor < 0
+ valor = valor.abs
+ positive = false
+ end
float_valor = format('%#0.02f', valor)
float_valor = float_valor.chars.reverse.insert(6, '.').reverse.join if float_valor.chars.count >= 7
float_valor = float_valor.chars.reverse.insert(10, '.').reverse.join if float_valor.chars.count >= 11
float_valor = float_valor.chars.reverse
float_valor[2] = ','
-
- "R$ #{float_valor.reverse.join}"
+ if positive
+ "R$ #{float_valor.reverse.join}"
+ else
+ "R$ -#{float_valor.reverse.join}"
+ end
end
end