Class: Knight::Validator

Inherits:
Object
  • Object
show all
Defined in:
lib/knight/validator.rb

Constant Summary collapse

DEFAULT_CONTEXT =
:default

Instance Method Summary collapse

Constructor Details

#initialize(*rules) ⇒ Validator

Initialize a validator

Examples:

Validator.new
Validator.new(Rule::Presence.new(:username))

Parameters:

  • rules (Array(Rule))


19
20
21
22
# File 'lib/knight/validator.rb', line 19

def initialize(*rules)
  @rules = {}
  rules.each { |rule| add(rule) }
end

Instance Method Details

#add(rule, context_name = DEFAULT_CONTEXT) ⇒ Set(Rule)

Add a rule

Examples:

validator = Validator.new
validator.add(Rule::Presence.new(:username))

Parameters:

  • rule (Rule)
  • context (Symbol)

Returns:



36
37
38
# File 'lib/knight/validator.rb', line 36

def add(rule, context_name = DEFAULT_CONTEXT)
  context(context_name) { |rules| rules << rule } if rule
end

#context(name) {|rules(name)| ... } ⇒ undefined

Accept block

Examples:

validator = Validator.new
validator.context :registration do |context|
  context << Rule::Presence.new(:username)
end

Parameters:

  • name (Symbol)

Yields:

Returns:

  • (undefined)


87
88
89
# File 'lib/knight/validator.rb', line 87

def context(name)
  yield rules(name)
end

#rules(context_name = DEFAULT_CONTEXT) ⇒ Set(Rule)

Run the validator

Examples:

validator = Validator.new(Rule::Presence.new(:username))
validator.rules

Parameters:

  • context (Symbol)

Returns:



68
69
70
71
72
# File 'lib/knight/validator.rb', line 68

def rules(context_name = DEFAULT_CONTEXT)
  @rules.fetch(context_name) do |key|
    @rules[key] = Set.new
  end
end

#run(resource, context_name = DEFAULT_CONTEXT) ⇒ Result

Run the validator

Examples:

validator = Validator.new(Rule::Presence.new(:username))
user = User.new(username: 'john')
validator.run(user)

Parameters:

  • resource (Object)
  • context (Symbol)

Returns:



53
54
55
# File 'lib/knight/validator.rb', line 53

def run(resource, context_name = DEFAULT_CONTEXT)
  Result.new(resource, rules(context_name))
end