class ParamsReady::Parameter::Definition
Attributes
default[R]
Public Class Methods
new( *args, default: Extensions::Undefined, optional: false, preprocessor: nil, populator: nil, postprocessor: nil, no_input: nil, no_output: nil, **opts )
click to toggle source
Calls superclass method
ParamsReady::Parameter::AbstractDefinition::new
# File lib/params_ready/parameter/definition.rb, line 92 def initialize( *args, default: Extensions::Undefined, optional: false, preprocessor: nil, populator: nil, postprocessor: nil, no_input: nil, no_output: nil, **opts ) super *args, **opts @default = Extensions::Undefined @optional = optional @preprocessor = preprocessor @postprocessor = postprocessor @populator = populator @no_input = no_input @no_output = no_output set_default(default) unless default == Extensions::Undefined end
Public Instance Methods
canonical_default(value)
click to toggle source
# File lib/params_ready/parameter/definition.rb, line 121 def canonical_default(value) return value if value.nil? ensure_canonical value rescue => e raise ParamsReadyError, "Invalid default: #{e.message}" end
default_defined?()
click to toggle source
# File lib/params_ready/parameter/definition.rb, line 115 def default_defined? return false unless defined? @default return false if @default == Extensions::Undefined true end
duplicate_default()
click to toggle source
# File lib/params_ready/parameter/definition.rb, line 222 def duplicate_default return Extensions::Undefined unless default_defined? return nil if @default.nil? duplicate_value(@default) end
finish()
click to toggle source
Calls superclass method
ParamsReady::Parameter::AbstractDefinition#finish
# File lib/params_ready/parameter/definition.rb, line 230 def finish if @populator && !@no_input raise ParamsReadyError, "Populator set for input parameter '#{name}'" end if @preprocessor && @no_input == true raise ParamsReadyError, "Preprocessor set for no-input parameter '#{name}'" end if @postprocessor && @no_input == true raise ParamsReadyError, "Postprocessor set for no-input parameter '#{name}'" end super end
memoize?()
click to toggle source
# File lib/params_ready/parameter/definition.rb, line 133 def memoize? return false if @memoize.nil? @memoize > 0 end
name_for_formatter()
click to toggle source
# File lib/params_ready/parameter/definition.rb, line 88 def name_for_formatter self.class.name_for_formatter end
no_input?(format)
click to toggle source
# File lib/params_ready/parameter/definition.rb, line 190 def no_input?(format) restricted_for_format?(@no_input, format) end
no_output?(format)
click to toggle source
# File lib/params_ready/parameter/definition.rb, line 194 def no_output?(format) restricted_for_format?(@no_output, format) end
postprocess(param, context, validator)
click to toggle source
# File lib/params_ready/parameter/definition.rb, line 163 def postprocess(param, context, validator) return if @postprocessor.nil? return unless @postprocessor.perform?(!context.local?, context.name) @postprocessor.block.call param, context rescue => error postprocessor_error = PostprocessorError.new(error) if validator.nil? raise postprocessor_error else validator.error! postprocessor_error end validator end
preprocess(input, context, validator)
click to toggle source
# File lib/params_ready/parameter/definition.rb, line 149 def preprocess(input, context, validator) return input if @preprocessor.nil? return input unless @preprocessor.perform?(!context.local?, context.name) @preprocessor.block.call input, context, self rescue => error preprocessor_error = PreprocessorError.new(error) if validator.nil? raise preprocessor_error else validator.error! preprocessor_error Extensions::Undefined end end
restricted_for_format?(rule, format)
click to toggle source
# File lib/params_ready/parameter/definition.rb, line 198 def restricted_for_format?(rule, format) case rule when nil, false false when true !format.local? when Helpers::Rule rule.include?(format.name) else raise ParamsReadyError, "Unexpected rule: #{rule}" end end
set_local(*arr, rule: nil)
click to toggle source
# File lib/params_ready/parameter/definition.rb, line 184 def set_local(*arr, rule: nil) rule = Helpers::Rule(rule) set_no_input(*arr, rule: rule) set_no_output(rule || true) end
set_no_input(*arr, rule: nil)
click to toggle source
# File lib/params_ready/parameter/definition.rb, line 177 def set_no_input(*arr, rule: nil) @no_input = Helpers::Rule(rule) || true raise ParamsReadyError, "Default not expected: #{arr}" if rule == false set_default *arr unless arr.empty? end
set_postprocessor(rule: nil, &block)
click to toggle source
# File lib/params_ready/parameter/definition.rb, line 144 def set_postprocessor(rule: nil, &block) raise "Postprocessor already set in '#{name}'" unless @postprocessor.nil? @postprocessor = Helpers::ConditionalBlock.new(rule: rule, &block) end
set_preprocessor(rule: nil, &block)
click to toggle source
# File lib/params_ready/parameter/definition.rb, line 139 def set_preprocessor(rule: nil, &block) raise "Preprocesser already set in '#{name}'" unless @preprocessor.nil? @preprocessor = Helpers::ConditionalBlock.new(rule: rule, &block) end