Module: CoffeeScript

Defined in:
lib/coffee_script.rb

Defined Under Namespace

Modules: MultiSource

Constant Summary collapse

Error =
ExecJS::Error
EngineError =
ExecJS::RuntimeError
CompilationError =
ExecJS::ProgramError

Class Method Summary collapse

Class Method Details

.all_available_versionsObject

Look for coffee-script-*.js in the vendor/js folder



53
54
55
56
57
58
59
60
# File 'lib/coffee_script.rb', line 53

def all_available_versions
  jade_paths = Dir.glob File.join MultiSource.sources_directory, "coffee-script*"

  jade_paths.map do |path|
    filename = File.basename path
    filename.sub(/^coffee-script-?/, '').sub(/\.js$/, '')
  end.compact
end

.compile_with_version(version, script, options = {}) ⇒ Object

Compile a script (String or IO) to JavaScript.



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/coffee_script.rb', line 63

def compile_with_version(version, script, options = {})
  script  = script.read if script.respond_to?(:read)

  if options.key?(:bare)
  elsif options.key?(:no_wrap)
    options[:bare] = options[:no_wrap]
  else
    options[:bare] = false
  end

  wrapper = <<-WRAPPER
    (function(script, options) {
      try {
        return CoffeeScript.compile(script, options);
      } catch (err) {
        if (err instanceof SyntaxError && err.location) {
          throw new SyntaxError([
            err.filename || "[stdin]",
            err.location.first_line + 1,
            err.location.first_column + 1
          ].join(":") + ": " + err.message)
        } else {
          throw err;
        }
      }
    })
  WRAPPER

  MultiSource.context_for(version).call(wrapper, script, options)
end

.default_versionObject



42
43
44
45
46
47
48
49
50
# File 'lib/coffee_script.rb', line 42

def default_version
  version = ENV['COFFEESCRIPT_DEFAULT_VERSION'] || '1.4.0'

  unless all_available_versions.include? version
    raise "default CoffeeScript version isn't availale"
  end

  version
end