class KonoUtils::FiscalCode::ControllaCF
Constants
- AZ
- LT
- Z9
Public Class Methods
valid?(cf, strict = false)
click to toggle source
# File lib/kono_utils/fiscal_code.rb, line 14 def self.valid?(cf, strict = false) cf = cf.to_s raise EmptyString.new("codice fiscale non può essere lasciato in bianco") if cf.empty? raise InvalidLength.new("codice fiscale dev'essere composto da 16 caratteri alfanumerici") if cf.size != 16 if strict==true && cf != cf.upcase; raise CaseError.new("i caratteri del codice fiscale devono essere maiuscoli"); else cf.upcase! end; s = (0..14).collect { |i| (i&1)!=0 ? ([Z9.include?(cf[i, 1]) ? cf[i, 1].to_i : AZ.index(cf[i, 1]), cf[i, 1]]) : LT.rassoc(cf[i, 1]) } s.include?(nil) ? false : AZ.at((s.transpose[0].inject(0) { |t, n| t+n })%26) == cf[-1, 1] end