class Temple::Generator

Abstract generator base class Generators should inherit this class and compile the Core Abstraction to ruby code.

@api public

Public Instance Methods

call(exp) click to toggle source
# File lib/temple/generators.rb, line 19
def call(exp)
  [preamble, compile(exp), postamble].join('; ')
end
on(*exp) click to toggle source
# File lib/temple/generators.rb, line 23
def on(*exp)
  raise InvalidExpression, "Generator supports only core expressions - found #{exp.inspect}"
end
on_capture(name, exp) click to toggle source
# File lib/temple/generators.rb, line 35
def on_capture(name, exp)
  options[:capture_generator].new(:buffer => name).call(exp)
end
on_code(code) click to toggle source
# File lib/temple/generators.rb, line 47
def on_code(code)
  code
end
on_dynamic(code) click to toggle source
# File lib/temple/generators.rb, line 43
def on_dynamic(code)
  concat(code)
end
on_multi(*exp) click to toggle source
# File lib/temple/generators.rb, line 27
def on_multi(*exp)
  exp.map {|e| compile(e) }.join('; ')
end
on_newline() click to toggle source
# File lib/temple/generators.rb, line 31
def on_newline
  "\n"
end
on_static(text) click to toggle source
# File lib/temple/generators.rb, line 39
def on_static(text)
  concat(text.inspect)
end

Protected Instance Methods

buffer() click to toggle source
# File lib/temple/generators.rb, line 53
def buffer
  options[:buffer]
end
concat(str) click to toggle source
# File lib/temple/generators.rb, line 57
def concat(str)
  "#{buffer} << (#{str})"
end