Module: Fend::Plugins::Core::ParamMethods

Defined in:
lib/fend.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#errorsObject (readonly)

Get param validation errors



172
173
174
# File 'lib/fend.rb', line 172

def errors
  @errors
end

#nameObject (readonly)

Get param name



169
170
171
# File 'lib/fend.rb', line 169

def name
  @name
end

#valueObject (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(message)
  @errors << message
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_classObject

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

#inspectObject



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

Returns:

  • (Boolean)


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

Yields:



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_sObject



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)

Returns:

  • (Boolean)


222
223
224
# File 'lib/fend.rb', line 222

def valid?
  errors.empty?
end