class Robert
Constants
- VERSION
Attributes
attributes[R]
errors[R]
Public Class Methods
build(klass, args = {})
click to toggle source
# File lib/robert.rb, line 7 def build(klass, args = {}) new(args).build(klass) end
build!(klass, args = {})
click to toggle source
# File lib/robert.rb, line 11 def build!(klass, args = {}) new(args).build!(klass) end
new(args = {})
click to toggle source
# File lib/robert.rb, line 18 def initialize(args = {}) args.each do |key, value| writer = :"#{key}=" if respond_to?(writer) send(writer, value) end end reset end
Public Instance Methods
build(klass)
click to toggle source
# File lib/robert.rb, line 38 def build(klass) valid? && klass.new(attributes) end
build!(klass)
click to toggle source
# File lib/robert.rb, line 42 def build!(klass) build(klass) || raise(ValidationError, errors) end
default_attributes()
click to toggle source
# File lib/robert.rb, line 30 def default_attributes {} end
default_errors()
click to toggle source
# File lib/robert.rb, line 34 def default_errors Hash.new { |h, k| h[k] = [] } end
valid?()
click to toggle source
# File lib/robert.rb, line 46 def valid? reset validate errors.empty? end
Private Instance Methods
add_attribute(key, value)
click to toggle source
# File lib/robert.rb, line 56 def add_attribute(key, value) attributes[key] = clean(value) unless errors.has_key?(key) end
add_error(key, error)
click to toggle source
# File lib/robert.rb, line 60 def add_error(key, error) attributes.delete(key) errors[key] << error end
clean(value)
click to toggle source
# File lib/robert.rb, line 66 def clean(value) value end
error(key, error, &condition)
click to toggle source
# File lib/robert.rb, line 70 def error(key, error, &condition) value = send(key) if value.instance_eval &condition add_error(key, error) true else add_attribute(key, value) false end end
reset()
click to toggle source
# File lib/robert.rb, line 84 def reset @attributes = default_attributes @errors = default_errors end
validate()
click to toggle source
# File lib/robert.rb, line 89 def validate raise NotImplementedError end