module Fend::Plugins::Core::ParamMethods
Attributes
errors[R]
Get param validation errors
name[R]
Get param name
value[R]
Get param value
Public Class Methods
new(name, value)
click to toggle source
# File lib/fend.rb, line 174 def initialize(name, value) @name = name @value = value @errors = [] end
Public Instance Methods
[](name)
click to toggle source
Fetch nested value
# File lib/fend.rb, line 181 def [](name) fetch(name) end
add_error(message)
click to toggle source
Append param error message
# File lib/fend.rb, line 232 def add_error(message) @errors << message end
each(opts = {}) { |param, index| ... }
click to toggle source
Define enumerable param member and execute validation block
# File lib/fend.rb, line 204 def each(opts = {}, &block) return if (flat? && invalid?) || !@value.is_a?(Enumerable) is_hash = opts[:hash].eql?(true) return if is_hash && !@value.is_a?(Hash) @value.each_with_index do |value, index| param_name, param_value = is_hash ? value : [index, value] param = _build_param(param_name, param_value) yield(param, index) _nest_errors(param.name, param.errors) if param.invalid? end end
fend_class()
click to toggle source
fetch(name)
click to toggle source
# File lib/fend.rb, line 185 def fetch(name) @value.fetch(name, nil) if @value.respond_to?(:fetch) end
inspect()
click to toggle source
# File lib/fend.rb, line 236 def inspect "#{fend_class.inspect}::Param #{super}" end
invalid?()
click to toggle source
Returns true if param is invalid/errors are present
# File lib/fend.rb, line 227 def invalid? !valid? end
params(*names) { |*values| ... }
click to toggle source
Define child params and execute validation block
# File lib/fend.rb, line 190 def params(*names, &block) return if flat? && invalid? params = names.each_with_object({}) do |name, result| param = _build_param(name, self[name]) result[name] = param end yield(*params.values) params.each { |name, param| _nest_errors(name, param.errors) if param.invalid? } end
to_s()
click to toggle source
# File lib/fend.rb, line 240 def to_s "#{fend_class.inspect}::Param #{super}" end
valid?()
click to toggle source
Returns true if param is valid (no errors)
# File lib/fend.rb, line 222 def valid? errors.empty? end
Private Instance Methods
_build_param(*args)
click to toggle source
# File lib/fend.rb, line 260 def _build_param(*args) self.class.new(*args) end
_nest_errors(name, messages)
click to toggle source
# File lib/fend.rb, line 255 def _nest_errors(name, messages) @errors = {} unless @errors.is_a?(Hash) @errors[name] = messages end
flat?()
click to toggle source
# File lib/fend.rb, line 251 def flat? errors.is_a?(Array) end