module Light::Services::Parameters
Attributes
parameters[RW]
parameters[RW]
Getters
Public Class Methods
included(base)
click to toggle source
# File lib/light/services/parameters.rb, line 6 def self.included(base) base.extend ClassMethods base.class_eval do class << self attr_accessor :parameters end end end
Private Instance Methods
all_parameters()
click to toggle source
# File lib/light/services/parameters.rb, line 34 def all_parameters return @_all_parameters if defined?(@_all_parameters) @_all_parameters = self.class.ancestors.select { |klass| klass.ancestors.include?(::Light::Services::Base) } .map(&:parameters).compact.flatten.uniq end
generate_parameters_methods()
click to toggle source
# File lib/light/services/parameters.rb, line 70 def generate_parameters_methods parameters.keys.each do |parameter_name| define_singleton_method parameter_name do parameters[parameter_name] end define_singleton_method "#{parameter_name}=" do |value| parameters[parameter_name] = value end end end
initialize_params()
click to toggle source
# File lib/light/services/parameters.rb, line 23 def initialize_params self.parameters = {} all_parameters.each do |options| validate_parameter(options) store_parameter(options) end generate_parameters_methods end
parameter_required?(options)
click to toggle source
# File lib/light/services/parameters.rb, line 50 def parameter_required?(options) !args.key?(options[:name]) && options[:required] && !options[:allow_nil] end
parameter_wrong_type?(options)
click to toggle source
# File lib/light/services/parameters.rb, line 54 def parameter_wrong_type?(options) value = args[options[:name]] wrong_type = options[:type]&.none? { |type| value.is_a?(type) } not_allow_nil = !options[:allow_nil] || (options[:allow_nil] && !value.nil?) wrong_type && not_allow_nil end
store_parameter(options)
click to toggle source
# File lib/light/services/parameters.rb, line 63 def store_parameter(options) parameter_name = options[:name] parameter_value = args[parameter_name] parameters[parameter_name] = parameter_value end
validate_parameter(options)
click to toggle source
# File lib/light/services/parameters.rb, line 40 def validate_parameter(options) if parameter_required?(options) raise Light::Services::ParamRequired, "Parameter \"#{options[:name]}\" is required" end return unless parameter_wrong_type?(options) raise Light::Services::ParamType, "Type of \"#{options[:name]}\" must be \"#{options[:type]}\"" end