Sha256: c886d46cb20607dbfa48e3dc05c8f45923ec743ae2b7bc0491f10ec9d17a43fb
Contents?: true
Size: 808 Bytes
Versions: 2
Compression:
Stored size: 808 Bytes
Contents
class Typero::OibType < Typero::Type error :en, :not_an_oib_error, 'not in an OIB format' def set @value = check?(@value) ? @value.to_i : nil end def validate error_for(:not_an_oib_error) unless check?(@value) end def db_field opts = {} opts[:null] = false if @opts[:required] opts[:limit] = 11 [:string, opts] end private # http://domagoj.eu/oib/ def check? oib oib = oib.to_s return false unless oib.match(/^[0-9]{11}$/) control_sum = (0..9).inject(10) do |middle, position| middle += oib.at(position).to_i middle %= 10 middle = 10 if middle == 0 middle *= 2 middle %= 11 end control_sum = 11 - control_sum control_sum = 0 if control_sum == 10 return control_sum == oib.at(10).to_i end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
typero-0.8.1 | ./lib/typero/type/types/oib.rb |
typero-0.8.0 | ./lib/typero/type/types/oib.rb |