module MapDemTings::ClassMethods
Public Instance Methods
define_mapping_methods(opts)
click to toggle source
Example:
define_mapping_methods
(method_mapper: :mapper2,
value_mapper: :mapper1, inputs: %w( atlas_id ) )
# File lib/map-dem-tings.rb, line 19 def define_mapping_methods(opts) method_mapper_sym = opts[:method_mapper] value_mapper_sym = opts[:value_mapper] inputs = opts[:inputs] method_mapper = send(method_mapper_sym) inputs.each do |input_name| define_method(method_mapper.map(input_name)) do send(value_mapper_sym).map(input_name) end end end
define_method_mapper(name, &block)
click to toggle source
# File lib/map-dem-tings.rb, line 33 def define_method_mapper(name, &block) iv_name = "@@#{name}" block_source_only = block.source.gsub("define_method_mapper(#{name.inspect})", '') method_source = <<-end_src def self.#{name} #{iv_name} ||= MapDemTings::InputMapper.new #{block_source_only} end end_src class_eval(method_source) end
define_value_mapper(name, &block)
click to toggle source
# File lib/map-dem-tings.rb, line 47 def define_value_mapper(name, &block) iv_name = "@#{name}" block_source_only = block.source.gsub("define_value_mapper(#{name.inspect})", '') method_source = <<-end_src def #{name} #{iv_name} ||= MapDemTings::InputMapper.new #{block_source_only} end end_src class_eval(method_source) end