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