Module: TriggerSwitchD::SwitchFactory

Defined in:
lib/trigger_switch_d/switch.rb

Class Method Summary collapse

Class Method Details

.new(values) ⇒ Object

Creates the Switch class dynamically from values, which is assumed to be an Array of attributes/keys



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/trigger_switch_d/switch.rb', line 22

def self.new(values)
  definition = "  class Switch\n    attr_reader \#{values.map {|name| \":\#{name}\"}.join(\",\")}\n    def initialize(value)\n      value.each_pair do |key,value|\n        instance_variable_set(\"@\"+key.to_s,value) if respond_to?(key)\n      end\n    end\n    \n    def to_a_by_keys(keys)\n      keys.map do |key|\n        send(key)\n      end\n    end\n  end\n  EOS\n  ::TriggerSwitchD.module_eval(definition)\n  ::TriggerSwitchD.const_get(\"Switch\")\nend\n"