class Typero::OibType

Public Instance Methods

db_schema() click to toggle source
# File lib/typero/type/types/oib_type.rb, line 10
def db_schema
  [:string, {
    limit: 11
  }]
end
set() click to toggle source
# File lib/typero/type/types/oib_type.rb, line 4
def set
  value do |data|
    check?(data) ? data.to_i : error_for(:not_an_oib_error)
  end
end

Private Instance Methods

check?(oib) click to toggle source

domagoj.eu/oib/

# File lib/typero/type/types/oib_type.rb, line 19
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