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