class Creamerscript::Compiler
Compiles CreamerScript code to Coffeescript.
The Compiler
itself doesn’t really do much. It’s just a structured way of parsing code and then transforming it into Coffeescript.
Sweeteners are the real workers of CreamerScript. Take a look at the the creamerscript-sweeteners project for more info.
@example
compiler = Creamerscript::Compiler.new "(person say:'Hello')" compiler.compile # => "person.say("hello")
Attributes
source[RW]
Public Class Methods
new(source)
click to toggle source
# File lib/creamerscript/compiler.rb, line 21 def initialize(source) @source = source.dup end
Public Instance Methods
compile()
click to toggle source
# File lib/creamerscript/compiler.rb, line 25 def compile substitute source.tap { transform(source) } end
pattern()
click to toggle source
# File lib/creamerscript/compiler.rb, line 47 def pattern /_____CREAMER_([A-Z_]+)_(\d+)_____/ end
substitute()
click to toggle source
# File lib/creamerscript/compiler.rb, line 30 def substitute Sweeteners.each do |sweetener| sweetener.substitute(source) while source =~ sweetener.pattern end end
transform(source)
click to toggle source
# File lib/creamerscript/compiler.rb, line 36 def transform(source) source.gsub!(pattern) do |sub| sweetener = Sweeteners.for($1.downcase.to_sym) sweetener.call($2.to_i) result = sweetener.to_coffee result = transform(result) if result =~ pattern result end end