Class: CommandClass

Inherits:
Object
  • Object
show all
Defined in:
lib/command_class.rb

Defined Under Namespace

Modules: Include

Class Method Summary collapse

Class Method Details

.commandify(cmd_cls, dependencies, inputs, &blk) ⇒ Object

Turns the class into a command class



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/command_class.rb', line 15

def self.commandify(cmd_cls, dependencies, inputs, &blk)
  cmd_cls.const_set('DEFAULT_DEPS', dependencies)

  cmd_cls.class_eval "    def initialize(**passed_deps)\n      deps = DEFAULT_DEPS.merge(passed_deps)\n      deps.each { |name, val| instance_variable_set('@' + name.to_s, val) }\n    end\n\n    def call(\#{cmd_call_signature(inputs)})\n      Call.new(\#{call_ctor_args(dependencies, inputs)}).()\n    end\n  RUBY\n\n  call_class = Class.new(cmd_cls, &blk)\n  call_class.class_eval <<~RUBY\n    def initialize(\#{call_ctor_sig(dependencies, inputs)})\n      \#{set_input_attrs(dependencies, inputs)}\n    end\n  RUBY\n\n  cmd_cls.const_set('Call', call_class)\n  cmd_cls\nend\n"

.new(dependencies:, inputs:, &blk) ⇒ Object



9
10
11
# File 'lib/command_class.rb', line 9

def self.new(dependencies:, inputs:, &blk)
  commandify(Class.new, dependencies, inputs, &blk)
end