Sha256: 630a466e7ed86b9fca2ca56caf16c6b38f22ec751719dc6a43a320ddd96d5cb3

Contents?: true

Size: 1.93 KB

Versions: 19

Compression:

Stored size: 1.93 KB

Contents

/**
 *  class JadeEngine
 *
 *  Engine for the Jade template language. You will need `jade` Node modules
 *  installed in order to use [[Mincer]] with `*.jade` files:
 *
 *     npm install jade
 *
 *  This is a mixed-type engine that can be used as a 'backend' of [[JstEngine]]
 *  as well as standalone 'middleware' processor in a pipeline.
 *
 *  **NOTICE** Generated functions require you to have `jade` client runtime to
 *  be required:
 *
 *  ``` javascript
 *  //= require jade-runtime
 *  //= require templates/hello
 *  ```
 *
 *
 *  ##### SUBCLASS OF
 *
 *  [[Template]]
 **/


'use strict';


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


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


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


// Class constructor
var JadeEngine = module.exports = function JadeEngine() {
  Template.apply(this, arguments);
  Jade = Jade || Template.libs.jade || require('jade');
};


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


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


/**
 *  JadeEngine.configure(opts) -> Void
 *  - opts (Object):
 *
 *  Allows to set Jade compilation opts.
 *  See Jade compilation opts for details.
 *
 *  Default: `{}`.
 *
 *
 *  ##### Example
 *
 *      JadeEngine.configure({self: true});
 **/
JadeEngine.configure = function (opts) {
  options = _.clone(opts);
};


// Render data
JadeEngine.prototype.evaluate = function (context, locals) {
  if (this.nextProcessor && 'JstEngine' === this.nextProcessor.name) {
    // Use `compileClient` for Jade v1.0.0+, and `compile` for older versions
    var compile = Jade.compileClient || Jade.compile;

    return compile(this.data, _.extend({}, options, {
      client:   true, // needed only for Jade < v1.0.0
      filename: context.logicalpath
    })).toString();
  }

  return Jade.render(this.data, _.extend({}, options, locals, {
    filename: context.pathname
  }));
};

Version data entries

19 entries across 19 versions & 1 rubygems

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