module Fend::Plugins::Core::InstanceMethods

Public Instance Methods

call(raw_data) click to toggle source

Trigger data validation and return Result

# File lib/fend.rb, line 108
def call(raw_data)
  set_data(raw_data)
  validate(&validation_block)

  result(input: @_input_data, output: @_output_data, errors: @_input_param.errors)
end
param_class() click to toggle source

Get validation param class

# File lib/fend.rb, line 133
def param_class
  self.class::Param
end
process_input(input) click to toggle source

Process input data

# File lib/fend.rb, line 143
def process_input(input); end
process_output(output) click to toggle source

Process output data

# File lib/fend.rb, line 146
def process_output(output); end
result(args) click to toggle source

Instantiate and return result

# File lib/fend.rb, line 154
def result(args)
  result_class.new(args)
end
result_class() click to toggle source

Get validation result class

# File lib/fend.rb, line 138
def result_class
  self.class::Result
end
set_data(raw_data) click to toggle source

Set:

* raw input data
* validation input data
* result output data
* input param
# File lib/fend.rb, line 120
def set_data(raw_data)
  @_raw_data    = raw_data
  @_input_data  = process_input(raw_data) || raw_data
  @_output_data = process_output(@_input_data) || @_input_data
  @_input_param = param_class.new(:input, @_input_data)
end
validate(&block) click to toggle source

Execute validation block

# File lib/fend.rb, line 149
def validate(&block)
  instance_exec(@_input_param, &block) if block_given?
end
validation_block() click to toggle source

Returns validation block set on class level

# File lib/fend.rb, line 128
def validation_block
  self.class.validation_block
end