Class: BoletoBancario::Calculos::FatoresDeMultiplicacao
- Inherits:
-
Array
- Object
- Array
- BoletoBancario::Calculos::FatoresDeMultiplicacao
- Defined in:
- lib/boleto_bancario/calculos/fatores_de_multiplicacao.rb
Overview
Classe responsável por multiplicar cada dígito pelos fatores de multiplicação passado como argumento.
Imagine que temos o número ‘2468’ e os fatores de multiplicação [2, 1].
Será calculado da seguinte maneira:
2 4 6 8
* * * * ===> Multiplicação
1 2 1 2
#=> [2, 8, 6, 16]
Você pode passar outros fatores de multiplicação se você precisar. Por exemplo, dado o número ‘1234567890’ e os fatores de multiplicação: [2, 3, 4, 5, 6, 7, 8, 9]. Será calculado da seguinte maneira:
1 2 3 4 5 6 7 8 9 0
* * * * * * * * * *
3 2 9 8 7 6 5 4 3 2
#=> [3, 4, 27, 32, 35, 36, 35, 32, 27, 0]
Instance Method Summary collapse
-
#calculate ⇒ Array
Para cada número realiza a multiplicação para cada dígito.
- #initialize(number, options) ⇒ Array constructor
Constructor Details
#initialize(number, options) ⇒ Array
53 54 55 56 57 |
# File 'lib/boleto_bancario/calculos/fatores_de_multiplicacao.rb', line 53 def initialize(number, ) @number = number.to_s.reverse.split('') @factors = .fetch(:fatores).cycle.take(@number.size) super(calculate) end |
Instance Method Details
#calculate ⇒ Array
Para cada número realiza a multiplicação para cada dígito.
62 63 64 |
# File 'lib/boleto_bancario/calculos/fatores_de_multiplicacao.rb', line 62 def calculate @number.collect.each_with_index { |n, index| n.to_i * @factors[index] }.reverse end |