Sha256: e1f80b3bfef6d27d241a2a2679f48e26eba2eb8438b382734d70a2107cf25899

Contents?: true

Size: 1.72 KB

Versions: 19

Compression:

Stored size: 1.72 KB

Contents

/** internal
 *  class Processor
 *
 *  Used to create custom processors without need to extend [[Template]] by
 *  simply providing a function to the processor registration methods:
 *
 *      var name = 'my-pre-processor';
 *      var func = function (context, data, callback) {
 *        callback(null, data.toLowerCase());
 *      };
 *
 *      // register custom pre-processor
 *      environment.registerPreProcessor('text/css', name, func);
 *
 *      // unregister custom pre-processor
 *      environment.unregisterPreProcessor('text/css', name);
 *
 *
 *  ##### See Also:
 *
 *  - [[Context]]
 *  - [[Processing]]
 *
 *
 *  ##### SUBCLASS OF
 *
 *  [[Template]]
 **/


'use strict';


// stdlib
var inherits = require('util').inherits;


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


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


// Class constructor
var Processor = module.exports = function Processor() {
  Template.apply(this, arguments);
};


inherits(Processor, Template);



// Run processor
Processor.prototype.evaluate = function (context) {
  if (Processor === this.constructor) {
    throw new Error('Processor can\'t be used directly. Use `Processor.create()`.');
  }

  return this.constructor.__func__(context, this.data);
};


/**
 *  Processor.create(name, func) -> Function
 *
 *  Returns new `Processor` subclass.
 **/
Processor.create = function (name, func) {
  var Klass;

  if (!_.isFunction(func)) {
    throw new Error('Processor#create() expects second argument to be a function.');
  }

  Klass = function () { Processor.apply(this, arguments); };
  inherits(Klass, Processor);

  prop(Klass, '__name__', 'Processor(' + name + ')');
  prop(Klass, '__func__', func);

  return Klass;
};

Version data entries

19 entries across 19 versions & 1 rubygems

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