Class: RgGen::OutputBase::Item::CodeGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/rggen/output_base/item.rb

Instance Method Summary collapse

Instance Method Details

#[]=(kind, body) ⇒ Object



9
10
11
12
# File 'lib/rggen/output_base/item.rb', line 9

def []=(kind, body)
  @bodies ||= {}
  @bodies[kind] = body
end

#copyObject



23
24
25
26
27
# File 'lib/rggen/output_base/item.rb', line 23

def copy
  CodeGenerator.new.tap do |g|
    g.instance_variable_set(:@bodies, Hash[@bodies]) if @bodies
  end
end

#generate_code(item, kind, buffer) ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/rggen/output_base/item.rb', line 14

def generate_code(item, kind, buffer)
  return unless @bodies && @bodies.key?(kind)
  if @bodies[kind].arity.zero?
    buffer << item.instance_exec(&@bodies[kind])
  else
    item.instance_exec(buffer, &@bodies[kind])
  end
end