Class: Js2coffee::Compiler

Inherits:
Object
  • Object
show all
Defined in:
lib/js2coffee/compiler.rb

Direct Known Subclasses

CoffeeCompiler, JsCompiler

Class Method Summary collapse

Class Method Details

.compile(script, options = {}) ⇒ Object



27
28
29
30
31
32
# File 'lib/js2coffee/compiler.rb', line 27

def compile(script, options={})
  result = compiler.call(wrapper, script, options)
  result['code']
rescue ExecJS::RuntimeError
  puts $!.message
end

.compile_file(file, options = {}) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/js2coffee/compiler.rb', line 34

def compile_file(file, options={})
  result = compiler.call(wrapper, Pathname(file).read, options)
  puts "==> #{file}" if $stdout.tty?
  result['code']
rescue ExecJS::RuntimeError
  puts $!.message
end

.compilerObject



23
24
25
# File 'lib/js2coffee/compiler.rb', line 23

def compiler
  @coffee ||= ExecJS.compile(source)
end

.sourceObject



11
12
13
# File 'lib/js2coffee/compiler.rb', line 11

def source
  @source or fail 'Specify compiler source first.'
end

.source=(new_source) ⇒ Object



15
16
17
# File 'lib/js2coffee/compiler.rb', line 15

def source=(new_source)
  @source = File.read(File.expand_path("../compiler/#{new_source}", __FILE__))
end

.wrapperObject



19
20
21
# File 'lib/js2coffee/compiler.rb', line 19

def wrapper
  fail NotImplementError, 'define wrapper in subclass!'
end