Class: Lanes::API::CoffeeScriptProcessor

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

Direct Known Subclasses

CjsxProcessor

Defined Under Namespace

Classes: CoffeeClass, ReactCoffeeClass

Constant Summary collapse

CONSTRUCTOR =
/constructor\s*:/
EXTENDING_CLASS_DEFINITION =
/^\s*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.



60
61
62
# File 'lib/lanes/api/coffeescript_processor.rb', line 60

def contents
  @contents
end

Instance Method Details

#cleanedObject



66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/lanes/api/coffeescript_processor.rb', line 66

def cleaned
    @contents = data.dup
    data.scan(EXTENDING_CLASS_DEFINITION) do |match|
        (name, extends) = match
        cc = if extends =~ /\.(React|Screens|Components)\./
                 ReactCoffeeClass.new(name, extends, contents)
             else
                 CoffeeClass.new(name, extends, contents)
             end
        cc.setup_properties
        cc.save
    end
    contents
end

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



82
83
84
# File 'lib/lanes/api/coffeescript_processor.rb', line 82

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