Sha256: f7e281707a674cda7f1c2651b5c28ef6c084b08b71539b45c1348bddb5c84594
Contents?: true
Size: 1.46 KB
Versions: 6
Compression:
Stored size: 1.46 KB
Contents
# frozen_string_literal: true require_relative "../logging/composite_logger" module Kanal module Core module Helpers # Module assumes that class where it was included has methods # set(name, value) # get(name) # transforms unknown methods to setters/getters for parameters module ParameterFinderWithMethodMissingMixin include Logging::Logger def method_missing(symbol, *args, &block) if block && !args.first.nil? logger.error "Block and arg given simultaneously. Parameter name: '#{symbol.to_s}, arg: #{args.first}'" raise "Block and arg given simultaneously for parameter #{symbol.to_s}" end parameter_name = symbol.to_s parameter_name.sub! "=", "" parameter_name = parameter_name.to_sym value = block_given? ? block : args.first # standard workflow with settings properties with # input.prop = 123 if symbol.to_s.include? "=" @parameter_bag.set parameter_name, value elsif !args.empty? || block_given? # this approach can be used also in dsl # like that # setters: prop value # getters: prop @parameter_bag.set parameter_name, value # means it is used as setter in dsl, # method call with argument else @parameter_bag.get parameter_name end end end end end end
Version data entries
6 entries across 6 versions & 1 rubygems