class MetaCL::DSL::Root

Attributes

code[R]

Public Class Methods

new(program, filename) click to toggle source
Calls superclass method
# File lib/metacl/dsl/root.rb, line 12
def initialize(program, filename)
  @program = program
  super() # call initializers from modules
  @inner_code     = ""
  @post_init_code = ""
  @outer_code     = ""

  instance_eval IO.read(filename), filename

  @code = Templates::Wrapper.render(@inner_code, @post_init_code, @outer_code, @program.platform)
end

Public Instance Methods

apply_expression(matrix_name, options = {}, &block) click to toggle source
# File lib/metacl/dsl/root.rb, line 37
def apply_expression(matrix_name, options = {}, &block)
  expr = Expression.construct(@program, &block)
  code, init_code = ExpressionApplicator.construct(@program, expr, matrix_name, options)
  @inner_code << code << "\n\n"
  @post_init_code << init_code << "\n\n"
end
expression(name, *args, &block) click to toggle source
# File lib/metacl/dsl/root.rb, line 32
def expression(name, *args, &block)
  tree = Expression.construct(@program, &block)
  @program.resources.add_expression(name, tree, args)
end
platform(name) click to toggle source
# File lib/metacl/dsl/root.rb, line 24
def platform(name)
  @program.set_platform name # TODO platform check
end
print_matrix(name) click to toggle source
prints(string) click to toggle source
# File lib/metacl/dsl/root.rb, line 28
def prints(string)
  @inner_code << Templates::Prints.render(string, @program.platform) << "\n\n"
end
repeat(count, &block) click to toggle source
# File lib/metacl/dsl/root.rb, line 49
def repeat(count, &block)
  @inner_code << Templates::Iterate.render(count) << "\n"
  instance_eval(&block)
  @inner_code << "}\n\n"
end