Class: H8::Coffee
Overview
Coffeescript compiler and evaluator (language version 1.8.0)
Note that using global eval/compile is more efficient than create several compiler instance as compiler itself will then be compiled only once.
Constant Summary collapse
- @@compiler =
nil
- @@mutex =
Mutex.new
Class Method Summary collapse
-
.compile(src, **kwargs) ⇒ Object
Compile coffeescript and return javascript.
-
.eval(src, **kwargs) ⇒ Object
Compile and evaluate script.
Instance Method Summary collapse
-
#compile(src, file_name: nil, **kwargs) ⇒ Object
compile coffeescript source and return compiled javascript.
-
#context ⇒ Object
Provide context with CoffeeScrip compiler loaded.
-
#eval(src, **kwargs) ⇒ Object
Compile and evaulate coffee script.
-
#initialize ⇒ Coffee
constructor
Create compiler instance.
Constructor Details
Class Method Details
.compile(src, **kwargs) ⇒ Object
Compile coffeescript and return javascript. Keyword parameters are passed to H8::Context#eval - like time limits and so on.
This method IS THREAD SAFE, though it shares single compiler instance across all threads with a mutex.
30 31 32 33 34 |
# File 'lib/h8/coffee.rb', line 30 def self.compile src, ** kwargs @@mutex.synchronize { (@@compiler ||= Coffee.new).compile src, **kwargs } end |
.eval(src, **kwargs) ⇒ Object
Compile and evaluate script.
This method IS THREAD SAFE, it shares single compiler instance across all threads with a mutex.
19 20 21 22 23 |
# File 'lib/h8/coffee.rb', line 19 def self.eval src, ** kwargs @@mutex.synchronize { (@@compiler ||= Coffee.new).eval src, **kwargs } end |
Instance Method Details
#compile(src, file_name: nil, **kwargs) ⇒ Object
compile coffeescript source and return compiled javascript
44 45 46 47 48 49 50 |
# File 'lib/h8/coffee.rb', line 44 def compile src, file_name: nil, **kwargs @context[:cs] = src @context[:filename] = file_name res = @context.eval('CoffeeScript.compile(cs,{filename: filename})') @context[:cs] = nil # Sources can be big... res end |
#context ⇒ Object
Provide context with CoffeeScrip compiler loaded
59 60 61 |
# File 'lib/h8/coffee.rb', line 59 def context @context end |
#eval(src, **kwargs) ⇒ Object
Compile and evaulate coffee script. Optional parameters are passed to H8::Context#eval
54 55 56 |
# File 'lib/h8/coffee.rb', line 54 def eval src, **kwargs @context.eval compile(src), **kwargs end |