class Lutaml::Model::Type::Integer

def self.cast(value)

def self.cast(value)
  return nil if value.nil?
  return 1 if value === true
  return 0 if value === false
  case value
  when ::String
    if value.match?(/^0[0-7]+$/) # Octal
      value.to_i(8)
    elsif value.match?(/^-?\d+(\.\d+)?(e-?\d+)?$/i) # Float/exponential
      Float(value).to_i
    else
      begin
        Integer(value, 10)
      rescue StandardError
        nil
      end
    end
  else
    begin
      Integer(value)
    rescue StandardError
      nil
    end
  end
end

def self.serialize(value)

Override serialize to return Integer instead of String
def self.serialize(value)
  return nil if value.nil?
  cast(value)
end