This Java library provides CoffeeScript.class precompiled with
Rhino.
This allows you to speed up the compiling of CoffeeScript snippets to JavaScript.
For example, it usually takes several seconds to load coffee-script.js and use
it to compile a simple CoffeeScript snippet. This can be reduced to several
milliseconds when using the precompiled CoffeeScript.class.
Maven:
- Group:
tv.cntt - Artifact:
rhinocoffeescript - Version:
1.12.7(= version of CoffeeScript)
If you see that a new version of CoffeeScript has been released, but there's no corresponding version of RhinoCoffeeScript, please report by creating a new issue.
Note that we have problem with CoffeeScript 2.x.
This library only includes Rhino dependency. You can use the precompiled class
tv.cntt.rhinocoffeescript.CoffeeScript or the utility class
tv.cntt.rhinocoffeescript.Compiler.
Scala example:
import javax.script.ScriptException
import tv.cntt.rhinocoffeescript.Compiler
object CoffeeScriptCompiler {
def compile(coffeeScript: String): Option[String] = {
try {
val javaScript = Compiler.compile(coffeeScript)
Some(javaScript)
} catch {
case e: ScriptException =>
val line = e.getLineNumber
val column = e.getColumnNumber
println("CoffeeScript syntax error at %d:%d".format(line, column))
None
}
}
}
You can also cache the generated JavaScript snippet using local cache (you can easily implement one with LinkedHashMap) or distributed cache (like Hazelcast).
- Download coffee-script.js (the core compile) from http://coffeescript.org/
- Precompile with Rhino:
org.mozilla.javascript.tools.jsc.Main.main(
"-opt 9 -nosource -o CoffeeScript -package tv.cntt.rhinocoffeescript coffee-script.js".split(" ")
)
Please create a new issue to report if a new version of Rhino has been released or the above options can be improved.
org.mozilla.javascript.tools.jsc.Main.main(Array("-h"))
gives:
Usage: java org.mozilla.javascript.tools.jsc.Main [OPTION]... SOURCE...
Valid options are:
-version VERSION Use the specified language version.
VERSION should be one of 100|110|120|130|140|150|160|170.
-opt LEVEL Use optimization with the specified level.
LEVEL should be one of 0..9.
-debug, -g Include debug information.
-nosource Do not include source to function objects.
It makes f.toString() useless and violates ECMAScript
standard but makes generated classes smaller and
saves memory.
-o CLASSNAME Use specified name as the last component of the main
generated class name. When specified, only one script
SOURCE is allowed. If omitted, it defaults to source
name with stripped .js suffix.
-package PACKAGE Place generated classes in the specified package.
-d DIRECTORY Use DIRECTORY as destination directory for generated
classes. If omitted, it defaults to parent directory
of SOURCE.
-encoding charset Sets the character encoding of the source files.
-extends CLASS The main generated class will extend the specified
class CLASS.
-implements INTERFACE1,INTERFACE2,... The main generated class will
implement the specified list of interfaces.
-main-method-class CLASS Specify the class name used for main method
implementation. The class must have a method matching
"public static void main(Script sc, String[] args)"
-observe-instruction-count Generate code that contains callbacks to
accumulate counts of executed instructions. Code
compiled with this flag can be monitored using
Context.setInstructionObserverThreshold.
-help, --help, -h Print this help and exit.