class RgGen::Core::OutputBase::CodeGenerator
Public Instance Methods
copy()
click to toggle source
# File lib/rggen/core/output_base/code_generator.rb, line 17 def copy generator = CodeGenerator.new generator.copy_code_blocks(@code_blocks) if @code_blocks generator end
generate(context, code, kind)
click to toggle source
# File lib/rggen/core/output_base/code_generator.rb, line 11 def generate(context, code, kind) code_blocks[kind].each do |block| execute_code_block(context, code, &block) end end
register(kind, &block)
click to toggle source
# File lib/rggen/core/output_base/code_generator.rb, line 7 def register(kind, &block) block_given? && (code_blocks[kind] << block) end
Protected Instance Methods
copy_code_blocks(original_blocks)
click to toggle source
# File lib/rggen/core/output_base/code_generator.rb, line 39 def copy_code_blocks(original_blocks) original_blocks.each { |kind, blocks| code_blocks[kind] = blocks.dup } end
Private Instance Methods
code_blocks()
click to toggle source
# File lib/rggen/core/output_base/code_generator.rb, line 25 def code_blocks @code_blocks ||= Hash.new { |blocks, kind| blocks[kind] = [] } end
execute_code_block(context, code, &block)
click to toggle source
# File lib/rggen/core/output_base/code_generator.rb, line 29 def execute_code_block(context, code, &block) if block.arity.zero? code << context.instance_exec(&block) else context.instance_exec(code, &block) end end