Module: Fend::Plugins::Core::ParamMethods
- Defined in:
- lib/fend.rb
Instance Attribute Summary collapse
-
#errors ⇒ Object
readonly
Get param validation errors.
-
#name ⇒ Object
readonly
Get param name.
-
#value ⇒ Object
readonly
Get param value.
Instance Method Summary collapse
-
#[](name) ⇒ Object
Fetch nested value.
-
#add_error(message) ⇒ Object
Append param error message.
-
#each(opts = {}, &block) ⇒ Object
Define enumerable param member and execute validation block.
-
#fend_class ⇒ Object
Return Fend class under which Param class is namespaced.
- #fetch(name) ⇒ Object
- #initialize(name, value) ⇒ Object
- #inspect ⇒ Object
-
#invalid? ⇒ Boolean
Returns true if param is invalid/errors are present.
-
#params(*names) {|params.values| ... } ⇒ Object
Define child params and execute validation block.
- #to_s ⇒ Object
-
#valid? ⇒ Boolean
Returns true if param is valid (no errors).
Instance Attribute Details
#errors ⇒ Object (readonly)
Get param validation errors
172 173 174 |
# File 'lib/fend.rb', line 172 def errors @errors end |
#name ⇒ Object (readonly)
Get param name
169 170 171 |
# File 'lib/fend.rb', line 169 def name @name end |
#value ⇒ Object (readonly)
Get param value
166 167 168 |
# File 'lib/fend.rb', line 166 def value @value end |
Instance Method Details
#[](name) ⇒ Object
Fetch nested value
181 182 183 |
# File 'lib/fend.rb', line 181 def [](name) fetch(name) end |
#add_error(message) ⇒ Object
Append param error message
232 233 234 |
# File 'lib/fend.rb', line 232 def add_error() @errors << end |
#each(opts = {}, &block) ⇒ Object
Define enumerable param member and execute validation block
204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 |
# 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 ⇒ Object
Return Fend class under which Param class is namespaced
245 246 247 |
# File 'lib/fend.rb', line 245 def fend_class self.class::fend_class end |
#fetch(name) ⇒ Object
185 186 187 |
# File 'lib/fend.rb', line 185 def fetch(name) @value.fetch(name, nil) if @value.respond_to?(:fetch) end |
#initialize(name, value) ⇒ Object
174 175 176 177 178 |
# File 'lib/fend.rb', line 174 def initialize(name, value) @name = name @value = value @errors = [] end |
#inspect ⇒ Object
236 237 238 |
# File 'lib/fend.rb', line 236 def inspect "#{fend_class.inspect}::Param #{super}" end |
#invalid? ⇒ Boolean
Returns true if param is invalid/errors are present
227 228 229 |
# File 'lib/fend.rb', line 227 def invalid? !valid? end |
#params(*names) {|params.values| ... } ⇒ Object
Define child params and execute validation block
190 191 192 193 194 195 196 197 198 199 200 201 |
# 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 ⇒ Object
240 241 242 |
# File 'lib/fend.rb', line 240 def to_s "#{fend_class.inspect}::Param #{super}" end |
#valid? ⇒ Boolean
Returns true if param is valid (no errors)
222 223 224 |
# File 'lib/fend.rb', line 222 def valid? errors.empty? end |