Sha256: 08d0e048e6a2d93f2c3d002a07a9e330626d362bb777afa0d431766a4433c370
Contents?: true
Size: 813 Bytes
Versions: 1
Compression:
Stored size: 813 Bytes
Contents
class Typero::OibType < Typero::Type # 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 def set @value = check?(@value) ? @value.to_i : nil end def validate raise TypeError.new(error_for(:not_an_oib_error)) unless check?(@value) end def not_an_oib_error 'not in an OIB format' end def db_field opts = {} opts[:null] = false if @opts[:req] opts[:limit] = 11 [:string, opts] end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
typero-0.5.2 | ./lib/typero/type/oib.rb |