Module: SpanishCccValidator::CustomCccValidator
- Defined in:
- lib/spanish_ccc_validator/custom_ccc_validator.rb
Class Method Summary collapse
-
.calculate_digit(ary) ⇒ Object
Main algorithm.
-
.canonize(str) ⇒ Object
Gets a string and extracts the number from it Example: canonize(“1234-5678-90-3344556677”) returns “12345678903344556677”.
-
.validate(str) ⇒ Object
Validates size and checks control-digits corelation.
Class Method Details
.calculate_digit(ary) ⇒ Object
Main algorithm
10 11 12 13 14 15 16 17 18 |
# File 'lib/spanish_ccc_validator/custom_ccc_validator.rb', line 10 def self.calculate_digit(ary) key = [1,2,4,8,5,10,9,7,3,6] sumatory = 0 key.each_with_index { |number, index| sumatory += number * ary[index] } result = 11 - (sumatory % 11) result = 1 if result == 10 result = 0 if result == 11 result end |
.canonize(str) ⇒ Object
Gets a string and extracts the number from it Example: canonize(“1234-5678-90-3344556677”) returns “12345678903344556677”
5 6 7 |
# File 'lib/spanish_ccc_validator/custom_ccc_validator.rb', line 5 def self.canonize(str) str.gsub(/\D/,'') end |
.validate(str) ⇒ Object
Validates size and checks control-digits corelation
21 22 23 24 25 |
# File 'lib/spanish_ccc_validator/custom_ccc_validator.rb', line 21 def self.validate(str) ary = canonize(str).split('').map(&:to_i) return false unless ary.size == 20 (calculate_digit([0,0] + ary[0..7]) == ary[8]) && (calculate_digit(ary[10..19]) == ary[9]) end |