Class: Lanes::API::CoffeeScriptProcessor

Inherits:
JsAssetCompiler show all
Defined in:
lib/lanes/api/coffeescript_processor.rb

Defined Under Namespace

Classes: CoffeeClass

Constant Summary collapse

CONSTRUCTOR =
/constructor\s*:/
EXTENDING_CLASS_DEFINITION =
/class\s+([\w|\.]+)\s+extends\s+([\w|\.]+)\s*?\n/

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from JsAssetCompiler

#prepare, register, #wrap_js

Instance Attribute Details

#contentsObject (readonly)

Returns the value of attribute contents.



39
40
41
# File 'lib/lanes/api/coffeescript_processor.rb', line 39

def contents
  @contents
end

Instance Method Details

#cleanedObject



45
46
47
48
49
50
51
52
53
54
55
# File 'lib/lanes/api/coffeescript_processor.rb', line 45

def cleaned
    @contents = data.dup
    data.scan(EXTENDING_CLASS_DEFINITION) do |match|
        (name, extends) = match
        cc = CoffeeClass.new(name, extends, contents)
        cc.ensure_property("constructor", "-> super")
        cc.ensure_property("FILE", "FILE")
        cc.save
    end
    contents
end

#evaluate(scope, locals, &block) ⇒ Object



57
58
59
# File 'lib/lanes/api/coffeescript_processor.rb', line 57

def evaluate(scope, locals, &block)
    wrap_js scope, ::CoffeeScript.compile(cleaned, bare: true)
end