class Fictium::ParameterEvaluator

Attributes

params[R]

Public Class Methods

new() click to toggle source
# File lib/fictium/evaluators/parameter_evaluator.rb, line 5
def initialize
  @params = ActiveSupport::HashWithIndifferentAccess.new
end

Public Instance Methods

[](name) click to toggle source
# File lib/fictium/evaluators/parameter_evaluator.rb, line 22
def [](name)
  @params[name]
end
[]=(name, value) click to toggle source
# File lib/fictium/evaluators/parameter_evaluator.rb, line 26
def []=(name, value)
  @params[name] = value
end
evaluate_params(&block) click to toggle source
# File lib/fictium/evaluators/parameter_evaluator.rb, line 9
def evaluate_params(&block)
  if block.arity == 1
    block.call(self)
  else
    instance_eval(&block)
  end
  @params
end
method_missing(name, *_, **kwargs) click to toggle source
# File lib/fictium/evaluators/parameter_evaluator.rb, line 18
def method_missing(name, *_, **kwargs) # rubocop:disable Style/MethodMissingSuper
  self[name] = validate_keys(**kwargs) if respond_to_missing?(name)
end

Private Instance Methods

format_schema(args) click to toggle source
# File lib/fictium/evaluators/parameter_evaluator.rb, line 46
def format_schema(args)
  return unless args[:schema].present?

  schema_evaluator.format(ref: args[:schema][:ref]) if args[:schema][:ref].present?
  schema_evaluator.format(args[:schema])
end
respond_to_missing?(_method_name, _include_private = false) click to toggle source
# File lib/fictium/evaluators/parameter_evaluator.rb, line 32
def respond_to_missing?(_method_name, _include_private = false)
  true
end
schema_evaluator() click to toggle source
# File lib/fictium/evaluators/parameter_evaluator.rb, line 53
def schema_evaluator
  @schema_evaluator ||= Fictium::SchemaEvaluator.new
end
validate_keys(required: false, deprecated: false, allow_empty: false, **kwargs) click to toggle source
# File lib/fictium/evaluators/parameter_evaluator.rb, line 36
def validate_keys(required: false, deprecated: false, allow_empty: false, **kwargs)
  {
    description: kwargs[:description],
    required: required,
    deprecated: deprecated,
    allow_empty: allow_empty,
    schema: format_schema(kwargs)
  }
end