lib/validates_cnpj/cnpj.rb in validates_cnpj-1.1.3 vs lib/validates_cnpj/cnpj.rb in validates_cnpj-2.0.0
- old
+ new
@@ -1,52 +1,54 @@
-class CNPJ
- def initialize(number)
- number =~ /^(\d{2}\.?\d{3}\.?\d{3}\/?\d{4})-?(\d{2})$/
- @number = number
- @pure_number = $1
- @result = $2
- @cleaned_number = @pure_number.nil? ? nil : @number.gsub(/[\.\/-]/, "")
- format_number! if @pure_number
- end
+module ValidatesCnpj
+ class Cnpj
+ def initialize(number)
+ number =~ /^(\d{2}\.?\d{3}\.?\d{3}\/?\d{4})-?(\d{2})$/
+ @number = number
+ @pure_number = $1
+ @result = $2
+ @cleaned_number = @pure_number.nil? ? nil : @number.gsub(/[\.\/-]/, "")
+ format_number! if @pure_number
+ end
- def valid?
- return true if @number.nil?
- return false unless @pure_number
- check_cnpj
- end
+ def valid?
+ return true if @number.blank?
+ return false unless @pure_number
+ check_cnpj
+ end
- def number
- @number
- end
+ def number
+ @number
+ end
- private
+ private
- def check_cnpj
- return false if @cleaned_number.length != 14 or @cleaned_number.scan(/\d/).uniq.length == 1
- @result == first_digit_verifier + second_digit_verifier
- end
+ def check_cnpj
+ return false if @cleaned_number.length != 14 or @cleaned_number.scan(/\d/).uniq.length == 1
+ @result == first_digit_verifier + second_digit_verifier
+ end
- def first_digit_verifier
- sum = multiply_and_sum([5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2], @pure_number)
- digit_verifier(sum%11).to_s
- end
+ def first_digit_verifier
+ sum = multiply_and_sum([5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2], @pure_number)
+ digit_verifier(sum%11).to_s
+ end
- def second_digit_verifier
- sum = multiply_and_sum([6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2], @pure_number + first_digit_verifier)
- digit_verifier(sum%11).to_s
- end
+ def second_digit_verifier
+ sum = multiply_and_sum([6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2], @pure_number + first_digit_verifier)
+ digit_verifier(sum%11).to_s
+ end
- def multiply_and_sum(array, number)
- multiplied = []
- number.scan(/\d{1}/).each_with_index { |e, i| multiplied[i] = e.to_i * array[i] }
- multiplied.inject { |s,e| s + e }
- end
+ def multiply_and_sum(array, number)
+ multiplied = []
+ number.scan(/\d{1}/).each_with_index { |e, i| multiplied[i] = e.to_i * array[i] }
+ multiplied.inject { |s,e| s + e }
+ end
- def digit_verifier(rest)
- rest < 2 ? 0 : 11 - rest
- end
+ def digit_verifier(rest)
+ rest < 2 ? 0 : 11 - rest
+ end
- def format_number!
- @cleaned_number =~ /(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/
- @number = "#{$1}.#{$2}.#{$3}/#{$4}-#{$5}"
+ def format_number!
+ @cleaned_number =~ /(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/
+ @number = "#{$1}.#{$2}.#{$3}/#{$4}-#{$5}"
+ end
end
end
\ No newline at end of file