'Create a CustomJSTransform instance from a pair of CoffeeScript
snippets. The function bodies are translated to JavaScript functions
using node and therefore require return statements.
The ``func`` snippet namespace will contain the variable ``x`` (the
untransformed value) at render time. The ``v_func`` snippet namespace
will contain the variable ``xs`` (the untransformed vector) at render
time.
Example:
.. code-block:: coffeescript
func = "return Math.cos(x)"
v_func = "return [Math.cos(x) for x in xs]"
transform = CustomJSTransform.from_coffeescript(func, v_func)
Args:
func (str) : a coffeescript snippet to transform a single ``x`` value
v_func (str) : a coffeescript snippet function to transform a vector ``xs``
Returns:
CustomJSTransform'

@classmethod
def from_coffeescript(cls, func, v_func, args={}):

    compiled = nodejs_compile(func, lang='coffeescript', file='???')
    if ('error' in compiled):
        raise CompilationError(compiled.error)
    v_compiled = nodejs_compile(v_func, lang='coffeescript', file='???')
    if ('error' in v_compiled):
        raise CompilationError(v_compiled.error)
    return cls(func=compiled.code, v_func=v_compiled.code, args=args)
