module Assignbot
our Assignbot
gem
Constants
- VERSION
Public Class Methods
included(base)
click to toggle source
# File lib/assignbot.rb, line 14 def self.included(base) base.extend(Assignbot::ClassDsl) end
Public Instance Methods
assign(hash)
click to toggle source
# File lib/assignbot.rb, line 38 def assign(hash) assignbot_assign(:default, hash) end
method_missing(name, *args, &block)
click to toggle source
Calls superclass method
# File lib/assignbot.rb, line 42 def method_missing(name, *args, &block) if name =~ /assign_/i assigner_name = name.to_s.gsub(/^assign_/i, '') assignbot_assign(assigner_name, args[0]) else super(name, *args, &block) end end
Private Instance Methods
assignbot_assign(assigner_name, hash)
click to toggle source
# File lib/assignbot.rb, line 18 def assignbot_assign(assigner_name, hash) assignable = Assignbot::Core.get_assignable(self.class) assigner = assignable.get_assigner(assigner_name) fail AssigningError, "Undefined assigner scope: #{assigner_name}" unless assigner_name.to_sym == :default if assigner && assigner.variables.any? # use explicitly from defined variables assigner.variables.each do |_, variable_ic| source_variable = variable_ic.source_variable value = hash[source_variable.to_s] || hash[source_variable.to_sym] send(variable_ic.receptor, value) end else hash.each do |target_variable, value| send(:"#{target_variable}=", value) end end end