Module: RgGen::Core::OutputBase::CodeGeneratable
- Included in:
- Feature
- Defined in:
- lib/rggen/core/output_base/code_generatable.rb
Defined Under Namespace
Modules: Extension
Constant Summary collapse
- CODE_PHASES =
[ :pre_code, :main_code, :post_code ].freeze
- VARIABLE_NAMES =
CODE_PHASES .to_h { |phase| [phase, :"@#{phase}_blocks"] } .freeze
- TEMPLATE_PROCESSOR =
->(path, location) { process_template(path, location) }
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.included(klass) ⇒ Object
53 54 55 |
# File 'lib/rggen/core/output_base/code_generatable.rb', line 53 def self.included(klass) klass.extend(Extension) end |
Instance Method Details
#generate_code(code, phase, kind) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/rggen/core/output_base/code_generatable.rb', line 57 def generate_code(code, phase, kind) blocks = feature_hash_array_variable_get(VARIABLE_NAMES[phase]) return unless blocks blocks[kind]&.each do |block_and_args| block = block_and_args[0] args = block_and_args[1..] if block.arity == (args&.size || 0) code << instance_exec(*args, &block) else instance_exec(code, *args, &block) end end end |