class Treetop::Compiler::RubyBuilder
Attributes
address_space[R]
level[R]
ruby[R]
Public Class Methods
new()
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 9 def initialize @level = 0 @address_space = LexicalAddressSpace.new @ruby = String.new("") end
Public Instance Methods
<<(ruby_line)
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 15 def <<(ruby_line) return if ruby_line == '' ruby << ruby_line.tabto(level) << "\n" end
accumulate(left, right)
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 60 def accumulate(left, right) self << "#{left} << #{right}" end
assign(left, right)
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 48 def assign(left, right) if left.instance_of? Array self << "#{left.join(', ')} = #{right.join(', ')}" else self << "#{left} = #{right}" end end
break()
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 86 def break self << 'break' end
class_declaration(name, &block)
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 30 def class_declaration(name, &block) self << "class #{name}" indented(&block) self << "end" end
else_(&block)
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 74 def else_(&block) self << 'else' indented(&block) self << 'end' end
extend(var, module_name)
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 56 def extend(var, module_name) self << "#{var}.extend(#{module_name})" end
if_(condition, &block)
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 69 def if_(condition, &block) if__(condition, &block) self << 'end' end
if__(condition, &block)
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 64 def if__(condition, &block) self << "if #{condition}" indented(&block) end
in(depth = 2)
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 90 def in(depth = 2) @level += depth self end
indented(depth = 2) { || ... }
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 24 def indented(depth = 2) self.in(depth) yield self.out(depth) end
loop(&block)
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 80 def loop(&block) self << 'loop do' indented(&block) self << 'end' end
method_declaration(name, &block)
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 42 def method_declaration(name, &block) self << "def #{name}" indented(&block) self << "end" end
module_declaration(name, &block)
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 36 def module_declaration(name, &block) self << "module #{name}" indented(&block) self << "end" end
newline()
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 20 def newline ruby << "\n" end
next_address()
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 100 def next_address address_space.next_address end
out(depth = 2)
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 95 def out(depth = 2) @level -= depth self end
reset_addresses()
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 104 def reset_addresses address_space.reset_addresses end
Private Instance Methods
indent()
click to toggle source
# File lib/treetop/compiler/ruby_builder.rb, line 110 def indent " " * level end