Module: Fend::Plugins::Core::InstanceMethods

Defined in:
lib/fend.rb

Instance Method Summary collapse

Instance Method Details

#call(raw_data) ⇒ Object

Trigger data validation and return Result



108
109
110
111
112
113
# 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_classObject

Get validation param class



133
134
135
# File 'lib/fend.rb', line 133

def param_class
  self.class::Param
end

#process_input(input) ⇒ Object

Process input data



143
# File 'lib/fend.rb', line 143

def process_input(input); end

#process_output(output) ⇒ Object

Process output data



146
# File 'lib/fend.rb', line 146

def process_output(output); end

#result(args) ⇒ Object

Instantiate and return result



154
155
156
# File 'lib/fend.rb', line 154

def result(args)
  result_class.new(args)
end

#result_classObject

Get validation result class



138
139
140
# File 'lib/fend.rb', line 138

def result_class
  self.class::Result
end

#set_data(raw_data) ⇒ Object

Set:

* raw input data
* validation input data
* result output data
* input param


120
121
122
123
124
125
# 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) ⇒ Object

Execute validation block



149
150
151
# File 'lib/fend.rb', line 149

def validate(&block)
  instance_exec(@_input_param, &block) if block_given?
end

#validation_blockObject

Returns validation block set on class level



128
129
130
# File 'lib/fend.rb', line 128

def validation_block
  self.class.validation_block
end