class DTOSchema::Schema::Builder

Public Class Methods

new(schema) click to toggle source
# File lib/dto_schema/schema.rb, line 82
def initialize(schema)
  @schema = schema
end

Public Instance Methods

check(name = nil, &body) click to toggle source
# File lib/dto_schema/schema.rb, line 103
def check(name = nil, &body)
  raise ArgumentError, "Check definition name is not provided" if name.nil?
  raise ArgumentError, "Check definition is not provided for `#{name}`" if body.nil?
  result = Checks::Check.new(body)
  @schema.define_check(name, result)
  result
end
list(name, item_type, check: nil, &predicate) click to toggle source
# File lib/dto_schema/schema.rb, line 94
def list(name, item_type, check: nil, &predicate)
  check = Checks::parse_checks check, @schema
  check << Checks::Check.new(predicate) unless predicate.nil?
  item_validator = Validators::Parse::parse_validator item_type, @schema
  validator = Validators::ListValidator.new @schema, item_validator, check
  @schema.define_validator(name, validator)
  validator
end
object(name, &definition) click to toggle source
# File lib/dto_schema/schema.rb, line 86
def object(name, &definition)
  validator = Validators::ObjectValidator.new @schema
  builder = Validators::ObjectValidator::Builder.new @schema, validator
  builder.instance_eval(&definition)
  @schema.define_validator(name, validator)
  validator
end