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