Class: CommandClass
- Inherits:
-
Object
- Object
- CommandClass
- Defined in:
- lib/command_class.rb
Defined Under Namespace
Modules: Include
Class Method Summary collapse
-
.commandify(cmd_cls, dependencies, inputs, &blk) ⇒ Object
Turns the class into a command class.
- .new(dependencies:, inputs:, &blk) ⇒ Object
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 |