Sha256: 251609501c632705c18c104cdfc833730432a62d6187a8d6f70d7abd69892f21

Contents?: true

Size: 1.71 KB

Versions: 19

Compression:

Stored size: 1.71 KB

Contents

/**
 *  class CoffeeEngine
 *
 *  Engine for the CoffeeScript compiler. You will need `coffee-script` Node
 *  module installed in order to use [[Mincer]] with `*.coffee` and
 *  `*.litcoffee` files:
 *
 *      npm install coffee-script
 *
 *
 *  ##### SUBCLASS OF
 *
 *  [[Template]]
 **/


'use strict';


// stdlib
var extname = require('path').extname;


// 3rd-party
var _ = require('lodash');
var coffee; // initialized later


// internal
var Template  = require('../template');
var prop      = require('../common').prop;


////////////////////////////////////////////////////////////////////////////////


// Class constructor
var CoffeeEngine = module.exports = function CoffeeEngine() {
  Template.apply(this, arguments);
  coffee = coffee || Template.libs.coffee || require('coffee-script');
};


require('util').inherits(CoffeeEngine, Template);


// Internal (private) options storage
var options = {bare: true};


/**
 *  CoffeeEngine.configure(opts) -> Void
 *  - opts (Object):
 *
 *  Allows to set CoffeeScript compilation options.
 *  Default: `{bare: true}`.
 *
 *  ##### Example
 *
 *      CoffeeScript.configure({bare: true});
 **/
CoffeeEngine.configure = function (opts) {
  options = _.clone(opts);
};


// Render data
CoffeeEngine.prototype.evaluate = function (/*context, locals*/) {
  var loc;

  try {
    return coffee.compile(this.data, _.extend({}, options, {
      literate: '.litcoffee' === extname(this.file)
    }));
  } catch(err) {
    loc = err.location;

    if (loc) {
      loc = 'L' + (loc.first_line + 1) + ':' + (loc.first_column + 1);
      err.message += ' at ' + loc;
    }

    throw err;
  }
};


// Expose default MimeType of an engine
prop(CoffeeEngine, 'defaultMimeType', 'application/javascript');

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
ela-4.1.6 node_modules/mincer/lib/mincer/engines/coffee_engine.js
ela-4.1.5 node_modules/mincer/lib/mincer/engines/coffee_engine.js
ela-4.1.4 node_modules/mincer/lib/mincer/engines/coffee_engine.js
ela-4.1.3 node_modules/mincer/lib/mincer/engines/coffee_engine.js
ela-4.1.2 node_modules/mincer/lib/mincer/engines/coffee_engine.js
ela-4.1.1 node_modules/mincer/lib/mincer/engines/coffee_engine.js
ela-4.1.0 node_modules/mincer/lib/mincer/engines/coffee_engine.js
ela-4.0.0 node_modules/mincer/lib/mincer/engines/coffee_engine.js
ela-3.4.3 node_modules/mincer/lib/mincer/engines/coffee_engine.js
ela-3.4.2 node_modules/mincer/lib/mincer/engines/coffee_engine.js
ela-3.4.0 node_modules/mincer/lib/mincer/engines/coffee_engine.js
ela-3.3.1 node_modules/mincer/lib/mincer/engines/coffee_engine.js
ela-3.3.0 node_modules/mincer/lib/mincer/engines/coffee_engine.js
ela-3.2.0 node_modules/mincer/lib/mincer/engines/coffee_engine.js
ela-3.1.1 node_modules/mincer/lib/mincer/engines/coffee_engine.js
ela-3.1.0 node_modules/mincer/lib/mincer/engines/coffee_engine.js
ela-3.0.0 node_modules/mincer/lib/mincer/engines/coffee_engine.js
ela-2.0.0 node_modules/mincer/lib/mincer/engines/coffee_engine.js
ela-1.1.0 node_modules/mincer/lib/mincer/engines/coffee_engine.js