pax_global_header00006660000000000000000000000064132540524040014511gustar00rootroot0000000000000052 comment=11efc65852c7e7d36abf6f5fb770668db3ce7da6 consolidate.js-0.15.1/000077500000000000000000000000001325405240400145145ustar00rootroot00000000000000consolidate.js-0.15.1/.editorconfig000066400000000000000000000004051325405240400171700ustar00rootroot00000000000000root = true [*] indent_style = space end_of_line = lf charset = utf-8 indent_size = 2 trim_trailing_whitespace = true insert_final_newline = true [{**/{actual,fixtures,expected,templates}/**,*.md}] trim_trailing_whitespace = false insert_final_newline = falseconsolidate.js-0.15.1/.eslintrc.json000066400000000000000000000067751325405240400173270ustar00rootroot00000000000000{ "env": { "browser": false, "es6": true, "node": true, "mocha": true }, "globals": { "document": false, "navigator": false, "window": false }, "rules": { "accessor-pairs": 2, "arrow-spacing": [2, { "before": true, "after": true }], "block-spacing": [2, "always"], "brace-style": [2, "1tbs", { "allowSingleLine": true }], "comma-dangle": [2, "never"], "comma-spacing": [2, { "before": false, "after": true }], "comma-style": [2, "last"], "constructor-super": 2, "curly": [2, "multi-line"], "dot-location": [2, "property"], "eol-last": 2, "eqeqeq": [2, "allow-null"], "generator-star-spacing": [2, { "before": true, "after": true }], "handle-callback-err": [2, "^(err|error)$" ], "indent": [2, 2, { "SwitchCase": 1 }], "key-spacing": [2, { "beforeColon": false, "afterColon": true }], "keyword-spacing": [2, { "before": true, "after": true }], "new-cap": [2, { "newIsCap": true, "capIsNew": false }], "new-parens": 2, "no-array-constructor": 2, "no-caller": 2, "no-class-assign": 2, "no-cond-assign": 2, "no-const-assign": 2, "no-control-regex": 2, "no-debugger": 2, "no-delete-var": 2, "no-dupe-args": 2, "no-dupe-class-members": 2, "no-dupe-keys": 2, "no-duplicate-case": 2, "no-empty-character-class": 2, "no-eval": 2, "no-ex-assign": 2, "no-extend-native": 2, "no-extra-bind": 2, "no-extra-boolean-cast": 2, "no-extra-parens": [2, "functions"], "no-fallthrough": 2, "no-floating-decimal": 2, "no-func-assign": 2, "no-implied-eval": 2, "no-inner-declarations": [2, "functions"], "no-invalid-regexp": 2, "no-irregular-whitespace": 2, "no-iterator": 2, "no-label-var": 2, "no-labels": 2, "no-lone-blocks": 2, "no-mixed-spaces-and-tabs": 2, "no-multi-spaces": 2, "no-multi-str": 2, "no-multiple-empty-lines": [2, { "max": 1 }], "no-native-reassign": 0, "no-negated-in-lhs": 2, "no-new": 2, "no-new-func": 2, "no-new-object": 2, "no-new-require": 2, "no-new-wrappers": 2, "no-obj-calls": 2, "no-octal": 2, "no-octal-escape": 2, "no-proto": 0, "no-redeclare": 2, "no-regex-spaces": 2, "no-return-assign": 2, "no-self-compare": 2, "no-sequences": 2, "no-shadow-restricted-names": 2, "no-spaced-func": 2, "no-sparse-arrays": 2, "no-this-before-super": 2, "no-throw-literal": 2, "no-trailing-spaces": 0, "no-undef": 2, "no-undef-init": 2, "no-unexpected-multiline": 2, "no-unneeded-ternary": [2, { "defaultAssignment": false }], "no-unreachable": 2, "no-unused-vars": [2, { "vars": "all", "args": "none" }], "no-useless-call": 0, "no-with": 2, "one-var": [0, { "initialized": "never" }], "operator-linebreak": [0, "after", { "overrides": { "?": "before", ":": "before" } }], "padded-blocks": [0, "never"], "quotes": [2, "single", "avoid-escape"], "radix": 2, "semi": [2, "always"], "semi-spacing": [2, { "before": false, "after": true }], "space-before-blocks": [2, "always"], "space-before-function-paren": [2, "never"], "space-in-parens": [2, "never"], "space-infix-ops": 2, "space-unary-ops": [2, { "words": true, "nonwords": false }], "spaced-comment": [0, "always", { "markers": ["global", "globals", "eslint", "eslint-disable", "*package", "!", ","] }], "use-isnan": 2, "valid-typeof": 2, "wrap-iife": [2, "any"], "yoda": [2, "never"] } } consolidate.js-0.15.1/.gitignore000066400000000000000000000004401325405240400165020ustar00rootroot00000000000000# always ignore files *.DS_Store *.sublime-* # test related, or directories generated by tests test/actual actual coverage .nyc* # npm node_modules npm-debug.log # yarn yarn.lock yarn-error.log # misc _gh_pages _draft _drafts bower_components vendor temp tmp TODO.md package-lock.jsonconsolidate.js-0.15.1/.npmignore000066400000000000000000000000351325405240400165110ustar00rootroot00000000000000support test examples *.sock consolidate.js-0.15.1/.travis.yml000066400000000000000000000001461325405240400166260ustar00rootroot00000000000000sudo: false os: - linux - osx language: node_js node_js: - node - '9' - '8' - '6' - '4' consolidate.js-0.15.1/History.md000066400000000000000000000052371325405240400165060ustar00rootroot000000000000000.15.1 / 2018-03-19 =================== * add support for underscore partials * updating metadata and configurations * lint and cleanup code and tests 0.15.0 / 2017-11-01 =================== * add plates support * add teacup support * add liquid-node support * add velocityjs support * allow absolute and relative partial paths * extend dot options * support layouts in vash 0.14.0 / 2016-01-24 =================== * add slm support * add vash support * add twig support * fixes lodash 4 options * fixes liquid file extensions and path resolving 0.13.0 / 2015-05-26 =================== * fixes react template error * adds promises when a callback function is not passed to `render` * documentation updates 0.11.0 / 2015-02-07 ================== * fix aptl tests * update jade caching * add HTMLing support * add hamlet support * readme updates * add tinyliquid support * pass `options` to ECT.js * update ractive * update travis-ci to test 0.10, 0.12, and iojs 0.10.0 / 2013-11-23 ================== * add lodash support * add nunjucks support 0.9.1 / 2013-04-29 ================== * Update ECT version * Added support for Handlebars helpers with test. * Invalidates built-in dust cache if caching disabled 0.9.0 / 2013-03-28 ================== * dust-helpers support, latest version of dust * Re-add doT - global leaks fixed * improving templayed support 0.8.0 / 2013-01-23 ================== * add templayed support * add `then-jade` as an alternative to `jade` 0.7.0 / 2012-12-28 ================== * add atpl support 0.6.0 2012-12-22 ================== * add partials support * add support for toffee templates * remove dot it still leaks and the author has not fixed it 0.5.0 / 2012-10-29 ================== * add `mote` support * add support to `dust` partials * add support for `ECT` * add support for rendering without file * add support for `JUST` * improve Haml-Coffee caching. 0.4.0 / 2012-07-30 ================== * add doT support [sannis] * add mustache support [ForbesLindesay] * add walrus support [kagd] 0.3.1 / 2012-06-28 ================== * add QEJS support * add underscore support * change whiskers to use pre-defined `.__express` * remove engines. Closes #37 * remove kernel, cannot comply with our caching 0.3.0 / 2012-04-18 ================== * Added partials loading for whiskers [gsf] * Added dustjs-linkedin support 0.2.0 / 2012-04-04 ================== * Added support for dust [fatjonny] * Added handlebars support [jstewmon] 0.1.0 / 2012-01-03 ================== * Added support for several more engines 0.0.1 / 2010-01-03 ================== * Initial release consolidate.js-0.15.1/Makefile000066400000000000000000000001541325405240400161540ustar00rootroot00000000000000 REPORTER = spec test: @./node_modules/.bin/mocha \ --slow 30 \ --reporter $(REPORTER) .PHONY: testconsolidate.js-0.15.1/Readme.md000066400000000000000000000217251325405240400162420ustar00rootroot00000000000000# Consolidate.js Template engine consolidation library. ## Installation $ npm install consolidate ## Supported template engines - [atpl](https://github.com/soywiz/atpl.js) - [bracket](https://github.com/danlevan/bracket-template) - [doT.js](https://github.com/olado/doT) [(website)](http://olado.github.io/doT/) - [dust (unmaintained)](https://github.com/akdubya/dustjs) [(website)](http://akdubya.github.com/dustjs/) - [dustjs-linkedin (maintained fork of dust)](https://github.com/linkedin/dustjs) [(website)](http://linkedin.github.io/dustjs/) - [eco](https://github.com/sstephenson/eco) - [ect](https://github.com/baryshev/ect) [(website)](http://ectjs.com/) - [ejs](https://github.com/mde/ejs) [(website)](http://ejs.co/) - [haml](https://github.com/visionmedia/haml.js) - [haml-coffee](https://github.com/9elements/haml-coffee) - [hamlet](https://github.com/gregwebs/hamlet.js) - [handlebars](https://github.com/wycats/handlebars.js/) [(website)](http://handlebarsjs.com/) - [hogan](https://github.com/twitter/hogan.js) [(website)](http://twitter.github.com/hogan.js/) - [htmling](https://github.com/codemix/htmling) - [jade](https://github.com/visionmedia/jade) [(website)](http://jade-lang.com/) - [jazz](https://github.com/shinetech/jazz) - [jqtpl](https://github.com/kof/jqtpl) - [JUST](https://github.com/baryshev/just) - [liquor](https://github.com/chjj/liquor) - [lodash](https://github.com/bestiejs/lodash) [(website)](http://lodash.com/) - [marko](https://github.com/marko-js/marko) [(website)](http://markojs.com) - [mote](https://github.com/satchmorun/mote) [(website)](http://satchmorun.github.io/mote/) - [mustache](https://github.com/janl/mustache.js) - [nunjucks](https://github.com/mozilla/nunjucks) [(website)](https://mozilla.github.io/nunjucks) - [plates](https://github.com/flatiron/plates) - [pug (formerly jade)](https://github.com/pugjs/pug) [(website)](http://jade-lang.com/) - [QEJS](https://github.com/jepso/QEJS) - [ractive](https://github.com/Rich-Harris/Ractive) - [react](https://github.com/facebook/react) - [slm](https://github.com/slm-lang/slm) - [swig (unmaintained)](https://github.com/paularmstrong/swig) - [swig (maintained fork)](https://github.com/node-swig/swig-templates) - [teacup](https://github.com/goodeggs/teacup) - [templayed](http://archan937.github.com/templayed.js/) - [twig](https://github.com/justjohn/twig.js) - [liquid](https://github.com/leizongmin/tinyliquid) [(website)](http://liquidmarkup.org/) - [toffee](https://github.com/malgorithms/toffee) - [underscore](https://github.com/documentcloud/underscore) [(website)](http://underscorejs.org/#template) - [vash](https://github.com/kirbysayshi/vash) - [walrus](https://github.com/jeremyruppel/walrus) [(website)](http://documentup.com/jeremyruppel/walrus/) - [whiskers](https://github.com/gsf/whiskers.js) __NOTE__: you must still install the engines you wish to use, add them to your package.json dependencies. ## API All templates supported by this library may be rendered using the signature `(path[, locals], callback)` as shown below, which happens to be the signature that Express 3.x supports so any of these engines may be used within Express. __NOTE__: All this example code uses cons.swig for the swig template engine. Replace swig with whatever templating you are using. For example, use cons.hogan for hogan.js, cons.jade for jade, etc. `console.log(cons)` for the full list of identifiers. ```js var cons = require('consolidate'); cons.swig('views/page.html', { user: 'tobi' }, function(err, html){ if (err) throw err; console.log(html); }); ``` Or without options / local variables: ```js var cons = require('consolidate'); cons.swig('views/page.html', function(err, html){ if (err) throw err; console.log(html); }); ``` To dynamically pass the engine, simply use the subscript operator and a variable: ```js var cons = require('consolidate') , name = 'swig'; cons[name]('views/page.html', { user: 'tobi' }, function(err, html){ if (err) throw err; console.log(html); }); ``` ### Promises Additionally, all templates optionally return a promise if no callback function is provided. The promise represents the eventual result of the template function which will either resolve to a string, compiled from the template, or be rejected. Promises expose a `then` method which registers callbacks to receive the promise’s eventual value and a `catch` method which the reason why the promise could not be fulfilled. Promises allow more synchronous-like code structure and solve issues like race conditions. ```js var cons = require('consolidate'); cons.swig('views/page.html', { user: 'tobi' }) .then(function (html) { console.log(html); }) .catch(function (err) { throw err; }); ``` ## Caching To enable caching simply pass `{ cache: true }`. Engines _may_ use this option to cache things reading the file contents, compiled `Function`s etc. Engines which do _not_ support this may simply ignore it. All engines that consolidate.js implements I/O for will cache the file contents, ideal for production environments. When using consolidate directly: `cons.swig('views/page.html', { user: 'tobi', cache:true }, callback);` Using Express 3 or higher: `app.locals.cache = true` or set NODE_ENV to 'production' and Express will do this for you. ## Express 3.x example ```js var express = require('express') , cons = require('consolidate') , app = express(); // assign the swig engine to .html files app.engine('html', cons.swig); // set .html as the default extension app.set('view engine', 'html'); app.set('views', __dirname + '/views'); var users = []; users.push({ name: 'tobi' }); users.push({ name: 'loki' }); users.push({ name: 'jane' }); app.get('/', function(req, res){ res.render('index', { title: 'Consolidate.js' }); }); app.get('/users', function(req, res){ res.render('users', { title: 'Users', users: users }); }); app.listen(3000); console.log('Express server listening on port 3000'); ``` ## Template Engine Instances Template engines are exposed via the `cons.requires` object, but they are not instantiated until you've called the `cons[engine].render()` method. You can instantiate them manually beforehand if you want to add filters, globals, mixins, or other engine features. ```js var cons = require('consolidate'), nunjucks = require('nunjucks'); // add nunjucks to requires so filters can be // added and the same instance will be used inside the render method cons.requires.nunjucks = nunjucks.configure(); cons.requires.nunjucks.addFilter('foo', function () { return 'bar'; }); ``` ## Notes * If you're using Nunjucks, please take a look at the `exports.nunjucks.render` function in `lib.consolidate.js`. You can pass your own engine/environment via `options.nunjucksEnv`, or if you want to support Express you can pass `options.settings.views`, or if you have another use case, pass `options.nunjucks` (see the code for more insight). * You can pass **partials** with `options.partials` * For using **template inheritance** with nunjucks, you can pass a loader with `options.loader`. * To use **filters** with tinyliquid, use `options.filters` and specify an array of properties, each of which is a named filter function. A filter function takes a string as a parameter and returns a modified version of it. * To use **custom tags** with tinyliquid, use `options.customTags` to specify an array of tag functions that follow the tinyliquid [custom tag](https://github.com/leizongmin/tinyliquid/wiki/Custom-Tag) definition. * The default directory used with the **include** tag with tinyliquid is the current working directory. To override this, use `options.includeDir`. * `React` To render content into a html base template (eg. `index.html` of your React app), pass the path of the template with `options.base`. ## Running tests Install dev deps: $ npm install -d Run the tests: $ make test ## License (The MIT License) Copyright (c) 2011-2016 TJ Holowaychuk <tj@vision-media.ca> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. consolidate.js-0.15.1/appveyor.yml000066400000000000000000000004271325405240400171070ustar00rootroot00000000000000environment: matrix: - nodejs_version: '9' - nodejs_version: '8' - nodejs_version: '6' - nodejs_version: '4' install: - ps: 'Install-Product node $env:nodejs_version' - npm install test_script: - node --version - npm --version - npm test build: 'off' consolidate.js-0.15.1/examples/000077500000000000000000000000001325405240400163325ustar00rootroot00000000000000consolidate.js-0.15.1/examples/express.js000066400000000000000000000012011325405240400203530ustar00rootroot00000000000000// npm install express var express = require('../../express'); var cons = require('../'); var app = express(); var path = require('path'); app.engine('html', cons.swig); app.set('view engine', 'html'); app.set('views', path.join(__dirname, 'views')); var users = []; users.push({ name: 'tobi' }); users.push({ name: 'loki' }); users.push({ name: 'jane' }); app.get('/', function(req, res) { res.render('index', { title: 'Consolidate.js' }); }); app.get('/users', function(req, res) { res.render('users', { title: 'Users', users: users }); }); app.listen(3000); console.log('Express server listening on port 3000'); consolidate.js-0.15.1/examples/views/000077500000000000000000000000001325405240400174675ustar00rootroot00000000000000consolidate.js-0.15.1/examples/views/index.html000066400000000000000000000001701325405240400214620ustar00rootroot00000000000000

{{title}}

Welcome to the {{title}} demo. Click a link:

consolidate.js-0.15.1/examples/views/users.html000066400000000000000000000001411325405240400215120ustar00rootroot00000000000000

{{title}}

consolidate.js-0.15.1/index.js000066400000000000000000000000571325405240400161630ustar00rootroot00000000000000module.exports = require('./lib/consolidate'); consolidate.js-0.15.1/lib/000077500000000000000000000000001325405240400152625ustar00rootroot00000000000000consolidate.js-0.15.1/lib/consolidate.js000066400000000000000000001115571325405240400201360ustar00rootroot00000000000000'use strict'; /* * Engines which do not support caching of their file contents * should use the `read()` function defined in consolidate.js * On top of this, when an engine compiles to a `Function`, * these functions should either be cached within consolidate.js * or the engine itself via `options.cache`. This will allow * users and frameworks to pass `options.cache = true` for * `NODE_ENV=production`, however edit the file(s) without * re-loading the application in development. */ /** * Module dependencies. */ var fs = require('fs'); var path = require('path'); var Promise = require('bluebird'); var join = path.join; var resolve = path.resolve; var extname = path.extname; var dirname = path.dirname; var isAbsolute = path.isAbsolute; var readCache = {}; /** * Require cache. */ var cacheStore = {}; /** * Require cache. */ var requires = {}; /** * Clear the cache. * * @api public */ exports.clearCache = function() { readCache = {}; cacheStore = {}; }; /** * Conditionally cache `compiled` template based * on the `options` filename and `.cache` boolean. * * @param {Object} options * @param {Function} compiled * @return {Function} * @api private */ function cache(options, compiled) { // cachable if (compiled && options.filename && options.cache) { delete readCache[options.filename]; cacheStore[options.filename] = compiled; return compiled; } // check cache if (options.filename && options.cache) { return cacheStore[options.filename]; } return compiled; } /** * Read `path` with `options` with * callback `(err, str)`. When `options.cache` * is true the template string will be cached. * * @param {String} options * @param {Function} cb * @api private */ function read(path, options, cb) { var str = readCache[path]; var cached = options.cache && str && typeof str === 'string'; // cached (only if cached is a string and not a compiled template function) if (cached) return cb(null, str); // read fs.readFile(path, 'utf8', function(err, str) { if (err) return cb(err); // remove extraneous utf8 BOM marker str = str.replace(/^\uFEFF/, ''); if (options.cache) readCache[path] = str; cb(null, str); }); } /** * Read `path` with `options` with * callback `(err, str)`. When `options.cache` * is true the partial string will be cached. * * @param {String} options * @param {Function} fn * @api private */ function readPartials(path, options, cb) { if (!options.partials) return cb(); var partials = options.partials; var keys = Object.keys(partials); function next(index) { if (index === keys.length) return cb(null); var key = keys[index]; var partialPath = partials[key]; if (partialPath === undefined || partialPath === null || partialPath === false) { return next(++index); } var file; if (isAbsolute(partialPath)) { if (extname(partialPath) !== '') { file = partialPath; } else { file = join(partialPath + extname(path)); } } else { file = join(dirname(path), partialPath + extname(path)); } read(file, options, function(err, str) { if (err) return cb(err); options.partials[key] = str; next(++index); }); } next(0); } /** * promisify */ function promisify(cb, fn) { return new Promise(function(resolve, reject) { cb = cb || function(err, html) { if (err) { return reject(err); } resolve(html); }; fn(cb); }); } /** * fromStringRenderer */ function fromStringRenderer(name) { return function(path, options, cb) { options.filename = path; return promisify(cb, function(cb) { readPartials(path, options, function(err) { if (err) return cb(err); if (cache(options)) { exports[name].render('', options, cb); } else { read(path, options, function(err, str) { if (err) return cb(err); exports[name].render(str, options, cb); }); } }); }); }; } /** * velocity support. */ exports.velocityjs = fromStringRenderer('velocityjs'); /** * velocity string support. */ exports.velocityjs.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.velocityjs || (requires.velocityjs = require('velocityjs')); try { options.locals = options; cb(null, engine.render(str, options).trimLeft()); } catch (err) { cb(err); } }); }; /** * Liquid support. */ exports.liquid = fromStringRenderer('liquid'); /** * Liquid string support. */ /** * Note that in order to get filters and custom tags we've had to push * all user-defined locals down into @locals. However, just to make things * backwards-compatible, any property of `options` that is left after * processing and removing `locals`, `meta`, `filters`, `customTags` and * `includeDir` will also become a local. */ function _renderTinyliquid(engine, str, options, cb) { var context = engine.newContext(); var k; /** * Note that there's a bug in the library that doesn't allow us to pass * the locals to newContext(), hence looping through the keys: */ if (options.locals) { for (k in options.locals) { context.setLocals(k, options.locals[k]); } delete options.locals; } if (options.meta) { context.setLocals('page', options.meta); delete options.meta; } /** * Add any defined filters: */ if (options.filters) { for (k in options.filters) { context.setFilter(k, options.filters[k]); } delete options.filters; } /** * Set up a callback for the include directory: */ var includeDir = options.includeDir || process.cwd(); context.onInclude(function(name, callback) { var extname = path.extname(name) ? '' : '.liquid'; var filename = path.resolve(includeDir, name + extname); fs.readFile(filename, {encoding: 'utf8'}, function(err, data) { if (err) return callback(err); callback(null, engine.parse(data)); }); }); delete options.includeDir; /** * The custom tag functions need to have their results pushed back * through the parser, so set up a shim before calling the provided * callback: */ var compileOptions = { customTags: {} }; if (options.customTags) { var tagFunctions = options.customTags; for (k in options.customTags) { /*Tell jshint there's no problem with having this function in the loop */ /*jshint -W083 */ compileOptions.customTags[k] = function(context, name, body) { var tpl = tagFunctions[name](body.trim()); context.astStack.push(engine.parse(tpl)); }; /*jshint +W083 */ } delete options.customTags; } /** * Now anything left in `options` becomes a local: */ for (k in options) { context.setLocals(k, options[k]); } /** * Finally, execute the template: */ var tmpl = cache(context) || cache(context, engine.compile(str, compileOptions)); tmpl(context, cb); } exports.liquid.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.liquid; var Liquid; try { // set up tinyliquid engine engine = requires.liquid = require('tinyliquid'); // use tinyliquid engine _renderTinyliquid(engine, str, options, cb); return; } catch (err) { // set up liquid-node engine try { Liquid = requires.liquid = require('liquid-node'); engine = new Liquid.Engine(); } catch (err) { throw err; } } // use liquid-node engine try { var locals = options.locals || {}; if (options.meta) { locals.pages = options.meta; delete options.meta; } /** * Add any defined filters: */ if (options.filters) { engine.registerFilters(options.filters); delete options.filters; } /** * Set up a callback for the include directory: */ var includeDir = options.includeDir || process.cwd(); engine.fileSystem = new Liquid.LocalFileSystem(includeDir, 'liquid'); delete options.includeDir; /** * The custom tag functions need to have their results pushed back * through the parser, so set up a shim before calling the provided * callback: */ if (options.customTags) { var tagFunctions = options.customTags; for (k in options.customTags) { engine.registerTag(k, tagFunctions[k]); } delete options.customTags; } /** * Now anything left in `options` becomes a local: */ for (var k in options) { locals[k] = options[k]; } /** * Finally, execute the template: */ return engine .parseAndRender(str, locals) .nodeify(function(err, result) { if (err) { throw new Error(err); } else { return cb(null, result); } }); } catch (err) { cb(err); } }); }; /** * Jade support. */ exports.jade = function(path, options, cb) { return promisify(cb, function(cb) { var engine = requires.jade; if (!engine) { try { engine = requires.jade = require('jade'); } catch (err) { try { engine = requires.jade = require('then-jade'); } catch (otherError) { throw err; } } } try { var tmpl = cache(options) || cache(options, engine.compileFile(path, options)); cb(null, tmpl(options)); } catch (err) { cb(err); } }); }; /** * Jade string support. */ exports.jade.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.jade; if (!engine) { try { engine = requires.jade = require('jade'); } catch (err) { try { engine = requires.jade = require('then-jade'); } catch (otherError) { throw err; } } } try { var tmpl = cache(options) || cache(options, engine.compile(str, options)); cb(null, tmpl(options)); } catch (err) { cb(err); } }); }; /** * Dust support. */ exports.dust = fromStringRenderer('dust'); /** * Dust string support. */ exports.dust.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.dust; if (!engine) { try { engine = requires.dust = require('dust'); } catch (err) { try { engine = requires.dust = require('dustjs-helpers'); } catch (err) { engine = requires.dust = require('dustjs-linkedin'); } } } var ext = 'dust'; var views = '.'; if (options) { if (options.ext) ext = options.ext; if (options.views) views = options.views; if (options.settings && options.settings.views) views = options.settings.views; } if (!options || (options && !options.cache)) engine.cache = {}; engine.onLoad = function(path, callback) { if (extname(path) === '') path += '.' + ext; if (path[0] !== '/') path = views + '/' + path; read(path, options, callback); }; try { var templateName; if (options.filename) { templateName = options.filename.replace(new RegExp('^' + views + '/'), '').replace(new RegExp('\\.' + ext), ''); } var tmpl = cache(options) || cache(options, engine.compileFn(str, templateName)); tmpl(options, cb); } catch (err) { cb(err); } }); }; /** * Swig support. */ exports.swig = fromStringRenderer('swig'); /** * Swig string support. */ exports.swig.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.swig; if (!engine) { try { engine = requires.swig = require('swig'); } catch (err) { try { engine = requires.swig = require('swig-templates'); } catch (otherError) { throw err; } } } try { if (options.cache === true) options.cache = 'memory'; engine.setDefaults({ cache: options.cache }); var tmpl = cache(options) || cache(options, engine.compile(str, options)); cb(null, tmpl(options)); } catch (err) { cb(err); } }); }; /** * Atpl support. */ exports.atpl = fromStringRenderer('atpl'); /** * Atpl string support. */ exports.atpl.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.atpl || (requires.atpl = require('atpl')); try { var tmpl = cache(options) || cache(options, engine.compile(str, options)); cb(null, tmpl(options)); } catch (err) { cb(err); } }); }; /** * Liquor support, */ exports.liquor = fromStringRenderer('liquor'); /** * Liquor string support. */ exports.liquor.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.liquor || (requires.liquor = require('liquor')); try { var tmpl = cache(options) || cache(options, engine.compile(str, options)); cb(null, tmpl(options)); } catch (err) { cb(err); } }); }; /** * Twig support. */ exports.twig = fromStringRenderer('twig'); /** * Twig string support. */ exports.twig.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.twig || (requires.twig = require('twig').twig); var templateData = { data: str }; try { var tmpl = cache(templateData) || cache(templateData, engine(templateData)); cb(null, tmpl.render(options)); } catch (err) { cb(err); } }); }; /** * EJS support. */ exports.ejs = fromStringRenderer('ejs'); /** * EJS string support. */ exports.ejs.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.ejs || (requires.ejs = require('ejs')); try { var tmpl = cache(options) || cache(options, engine.compile(str, options)); cb(null, tmpl(options)); } catch (err) { cb(err); } }); }; /** * Eco support. */ exports.eco = fromStringRenderer('eco'); /** * Eco string support. */ exports.eco.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.eco || (requires.eco = require('eco')); try { cb(null, engine.render(str, options)); } catch (err) { cb(err); } }); }; /** * Jazz support. */ exports.jazz = fromStringRenderer('jazz'); /** * Jazz string support. */ exports.jazz.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.jazz || (requires.jazz = require('jazz')); try { var tmpl = cache(options) || cache(options, engine.compile(str, options)); tmpl.eval(options, function(str) { cb(null, str); }); } catch (err) { cb(err); } }); }; /** * JQTPL support. */ exports.jqtpl = fromStringRenderer('jqtpl'); /** * JQTPL string support. */ exports.jqtpl.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.jqtpl || (requires.jqtpl = require('jqtpl')); try { engine.template(str, str); cb(null, engine.tmpl(str, options)); } catch (err) { cb(err); } }); }; /** * Haml support. */ exports.haml = fromStringRenderer('haml'); /** * Haml string support. */ exports.haml.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.haml || (requires.haml = require('hamljs')); try { options.locals = options; cb(null, engine.render(str, options).trimLeft()); } catch (err) { cb(err); } }); }; /** * Hamlet support. */ exports.hamlet = fromStringRenderer('hamlet'); /** * Hamlet string support. */ exports.hamlet.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.hamlet || (requires.hamlet = require('hamlet')); try { options.locals = options; cb(null, engine.render(str, options).trimLeft()); } catch (err) { cb(err); } }); }; /** * Whiskers support. */ exports.whiskers = function(path, options, cb) { return promisify(cb, function(cb) { var engine = requires.whiskers || (requires.whiskers = require('whiskers')); engine.__express(path, options, cb); }); }; /** * Whiskers string support. */ exports.whiskers.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.whiskers || (requires.whiskers = require('whiskers')); try { cb(null, engine.render(str, options)); } catch (err) { cb(err); } }); }; /** * Coffee-HAML support. */ exports['haml-coffee'] = fromStringRenderer('haml-coffee'); /** * Coffee-HAML string support. */ exports['haml-coffee'].render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires['haml-coffee'] || (requires['haml-coffee'] = require('haml-coffee')); try { var tmpl = cache(options) || cache(options, engine.compile(str, options)); cb(null, tmpl(options)); } catch (err) { cb(err); } }); }; /** * Hogan support. */ exports.hogan = fromStringRenderer('hogan'); /** * Hogan string support. */ exports.hogan.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.hogan || (requires.hogan = require('hogan.js')); try { var tmpl = cache(options) || cache(options, engine.compile(str, options)); cb(null, tmpl.render(options, options.partials)); } catch (err) { cb(err); } }); }; /** * templayed.js support. */ exports.templayed = fromStringRenderer('templayed'); /** * templayed.js string support. */ exports.templayed.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.templayed || (requires.templayed = require('templayed')); try { var tmpl = cache(options) || cache(options, engine(str)); cb(null, tmpl(options)); } catch (err) { cb(err); } }); }; /** * Handlebars support. */ exports.handlebars = fromStringRenderer('handlebars'); /** * Handlebars string support. */ exports.handlebars.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.handlebars || (requires.handlebars = require('handlebars')); try { for (var partial in options.partials) { engine.registerPartial(partial, options.partials[partial]); } for (var helper in options.helpers) { engine.registerHelper(helper, options.helpers[helper]); } var tmpl = cache(options) || cache(options, engine.compile(str, options)); cb(null, tmpl(options)); } catch (err) { cb(err); } }); }; /** * Underscore support. */ exports.underscore = fromStringRenderer('underscore'); /** * Underscore string support. */ exports.underscore.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.underscore || (requires.underscore = require('underscore')); try { for (var partial in options.partials) { options.partials[partial] = engine.template(options.partials[partial]); } var tmpl = cache(options) || cache(options, engine.template(str, null, options)); cb(null, tmpl(options).replace(/\n$/, '')); } catch (err) { cb(err); } }); }; /** * Lodash support. */ exports.lodash = fromStringRenderer('lodash'); /** * Lodash string support. */ exports.lodash.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.lodash || (requires.lodash = require('lodash')); try { var tmpl = cache(options) || cache(options, engine.template(str, options)); cb(null, tmpl(options).replace(/\n$/, '')); } catch (err) { cb(err); } }); }; /** * Pug support. (formerly Jade) */ exports.pug = function(path, options, cb) { return promisify(cb, function(cb) { var engine = requires.pug; if (!engine) { try { engine = requires.pug = require('pug'); } catch (err) { try { engine = requires.pug = require('then-pug'); } catch (otherError) { throw err; } } } try { var tmpl = cache(options) || cache(options, engine.compileFile(path, options)); cb(null, tmpl(options)); } catch (err) { cb(err); } }); }; /** * Pug string support. */ exports.pug.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.pug; if (!engine) { try { engine = requires.pug = require('pug'); } catch (err) { try { engine = requires.pug = require('then-pug'); } catch (otherError) { throw err; } } } try { var tmpl = cache(options) || cache(options, engine.compile(str, options)); cb(null, tmpl(options)); } catch (err) { cb(err); } }); }; /** * QEJS support. */ exports.qejs = fromStringRenderer('qejs'); /** * QEJS string support. */ exports.qejs.render = function(str, options, cb) { return promisify(cb, function(cb) { try { var engine = requires.qejs || (requires.qejs = require('qejs')); engine.render(str, options).then(function(result) { cb(null, result); }, function(err) { cb(err); }).done(); } catch (err) { cb(err); } }); }; /** * Walrus support. */ exports.walrus = fromStringRenderer('walrus'); /** * Walrus string support. */ exports.walrus.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.walrus || (requires.walrus = require('walrus')); try { var tmpl = cache(options) || cache(options, engine.parse(str)); cb(null, tmpl.compile(options)); } catch (err) { cb(err); } }); }; /** * Mustache support. */ exports.mustache = fromStringRenderer('mustache'); /** * Mustache string support. */ exports.mustache.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.mustache || (requires.mustache = require('mustache')); try { cb(null, engine.to_html(str, options, options.partials)); } catch (err) { cb(err); } }); }; /** * Just support. */ exports.just = function(path, options, cb) { return promisify(cb, function(cb) { var engine = requires.just; if (!engine) { var JUST = require('just'); engine = requires.just = new JUST(); } engine.configure({ useCache: options.cache }); engine.render(path, options, cb); }); }; /** * Just string support. */ exports.just.render = function(str, options, cb) { return promisify(cb, function(cb) { var JUST = require('just'); var engine = new JUST({ root: { page: str }}); engine.render('page', options, cb); }); }; /** * ECT support. */ exports.ect = function(path, options, cb) { return promisify(cb, function(cb) { var engine = requires.ect; if (!engine) { var ECT = require('ect'); engine = requires.ect = new ECT(options); } engine.configure({ cache: options.cache }); engine.render(path, options, cb); }); }; /** * ECT string support. */ exports.ect.render = function(str, options, cb) { return promisify(cb, function(cb) { var ECT = require('ect'); var engine = new ECT({ root: { page: str }}); engine.render('page', options, cb); }); }; /** * mote support. */ exports.mote = fromStringRenderer('mote'); /** * mote string support. */ exports.mote.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.mote || (requires.mote = require('mote')); try { var tmpl = cache(options) || cache(options, engine.compile(str)); cb(null, tmpl(options)); } catch (err) { cb(err); } }); }; /** * Toffee support. */ exports.toffee = function(path, options, cb) { return promisify(cb, function(cb) { var toffee = requires.toffee || (requires.toffee = require('toffee')); toffee.__consolidate_engine_render(path, options, cb); }); }; /** * Toffee string support. */ exports.toffee.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.toffee || (requires.toffee = require('toffee')); try { engine.str_render(str, options, cb); } catch (err) { cb(err); } }); }; /** * doT support. */ exports.dot = fromStringRenderer('dot'); /** * doT string support. */ exports.dot.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.dot || (requires.dot = require('dot')); var extend = (requires.extend || (requires.extend = require('util')._extend)); try { var settings = {}; settings = extend(settings, engine.templateSettings); settings = extend(settings, options ? options.dot : {}); var tmpl = cache(options) || cache(options, engine.template(str, settings, options)); cb(null, tmpl(options)); } catch (err) { cb(err); } }); }; /** * bracket support. */ exports.bracket = fromStringRenderer('bracket'); /** * bracket string support. */ exports.bracket.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.bracket || (requires.bracket = require('bracket-template')); try { var tmpl = cache(options) || cache(options, engine.default.compile(str, options)); cb(null, tmpl(options)); } catch (err) { cb(err); } }); }; /** * Ractive support. */ exports.ractive = fromStringRenderer('ractive'); /** * Ractive string support. */ exports.ractive.render = function(str, options, cb) { return promisify(cb, function(cb) { var Engine = requires.ractive || (requires.ractive = require('ractive')); var template = cache(options) || cache(options, Engine.parse(str)); options.template = template; if (options.data === null || options.data === undefined) { var extend = (requires.extend || (requires.extend = require('util')._extend)); // Shallow clone the options object options.data = extend({}, options); // Remove consolidate-specific properties from the clone var i; var length; var properties = ['template', 'filename', 'cache', 'partials']; for (i = 0, length = properties.length; i < length; i++) { var property = properties[i]; delete options.data[property]; } } try { cb(null, new Engine(options).toHTML()); } catch (err) { cb(err); } }); }; /** * Nunjucks support. */ exports.nunjucks = fromStringRenderer('nunjucks'); /** * Nunjucks string support. */ exports.nunjucks.render = function(str, options, cb) { return promisify(cb, function(cb) { try { var engine = options.nunjucksEnv || requires.nunjucks || (requires.nunjucks = require('nunjucks')); var env = engine; // deprecated fallback support for express // // if (options.settings && options.settings.views) { env = engine.configure(options.settings.views); } else if (options.nunjucks && options.nunjucks.configure) { env = engine.configure.apply(engine, options.nunjucks.configure); } // // because `renderString` does not initiate loaders // we must manually create a loader for it based off // either `options.settings.views` or `options.nunjucks` or `options.nunjucks.root` // // // // // so instead we simply check if we passed a custom loader // otherwise we create a simple file based loader if (options.loader) { env = new engine.Environment(options.loader); } else if (options.settings && options.settings.views) { env = new engine.Environment( new engine.FileSystemLoader(options.settings.views) ); } else if (options.nunjucks && options.nunjucks.loader) { if (typeof options.nunjucks.loader === 'string') { env = new engine.Environment(new engine.FileSystemLoader(options.nunjucks.loader)); } else { env = new engine.Environment( new engine.FileSystemLoader( options.nunjucks.loader[0], options.nunjucks.loader[1] ) ); } } env.renderString(str, options, cb); } catch (err) { throw cb(err); } }); }; /** * HTMLing support. */ exports.htmling = fromStringRenderer('htmling'); /** * HTMLing string support. */ exports.htmling.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.htmling || (requires.htmling = require('htmling')); try { var tmpl = cache(options) || cache(options, engine.string(str)); cb(null, tmpl.render(options)); } catch (err) { cb(err); } }); }; /** * Rendering function */ function requireReact(module, filename) { var babel = requires.babel || (requires.babel = require('babel-core')); var compiled = babel.transformFileSync(filename, { presets: [ 'react' ] }).code; return module._compile(compiled, filename); } exports.requireReact = requireReact; /** * Converting a string into a node module. */ function requireReactString(src, filename) { var babel = requires.babel || (requires.babel = require('babel-core')); if (!filename) filename = ''; var m = new module.constructor(); filename = filename || ''; // Compile Using React var compiled = babel.transform(src, { presets: [ 'react' ] }).code; // Compile as a module m.paths = module.paths; m._compile(compiled, filename); return m.exports; } /** * A naive helper to replace {{tags}} with options.tags content */ function reactBaseTmpl(data, options) { var exp; var regex; // Iterates through the keys in file object // and interpolate / replace {{key}} with it's value for (var k in options) { if (options.hasOwnProperty(k)) { exp = '{{' + k + '}}'; regex = new RegExp(exp, 'g'); if (data.match(regex)) { data = data.replace(regex, options[k]); } } } return data; } /** * Plates Support. */ exports.plates = fromStringRenderer('plates'); /** * Plates string support. */ exports.plates.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.plates || (requires.plates = require('plates')); var map = options.map || undefined; try { var tmpl = engine.bind(str, options, map); cb(null, tmpl); } catch (err) { cb(err); } }); }; /** * The main render parser for React bsaed templates */ function reactRenderer(type) { if (require.extensions) { // Ensure JSX is transformed on require if (!require.extensions['.jsx']) { require.extensions['.jsx'] = requireReact; } // Supporting .react extension as well as test cases // Using .react extension is not recommended. if (!require.extensions['.react']) { require.extensions['.react'] = requireReact; } } // Return rendering fx return function(str, options, cb) { return promisify(cb, function(cb) { // React Import var ReactDOM = requires.ReactDOM || (requires.ReactDOM = require('react-dom/server')); var react = requires.react || (requires.react = require('react')); // Assign HTML Base var base = options.base; delete options.base; var enableCache = options.cache; delete options.cache; var isNonStatic = options.isNonStatic; delete options.isNonStatic; // Start Conversion try { var Code; var Factory; var baseStr; var content; var parsed; if (!cache(options)) { // Parsing if (type === 'path') { var path = resolve(str); delete require.cache[path]; Code = require(path); } else { Code = requireReactString(str); } Factory = cache(options, react.createFactory(Code)); } else { Factory = cache(options); } parsed = new Factory(options); content = (isNonStatic) ? ReactDOM.renderToString(parsed) : ReactDOM.renderToStaticMarkup(parsed); if (base) { baseStr = readCache[str] || fs.readFileSync(resolve(base), 'utf8'); if (enableCache) { readCache[str] = baseStr; } options.content = content; content = reactBaseTmpl(baseStr, options); } cb(null, content); } catch (err) { cb(err); } }); }; } /** * React JS Support */ exports.react = reactRenderer('path'); /** * React JS string support. */ exports.react.render = reactRenderer('string'); /** * ARC-templates support. */ exports['arc-templates'] = fromStringRenderer('arc-templates'); /** * ARC-templates string support. */ exports['arc-templates'].render = function(str, options, cb) { var readFileWithOptions = Promise.promisify(read); var consolidateFileSystem = {}; consolidateFileSystem.readFile = function(path) { return readFileWithOptions(path, options); }; return promisify(cb, function(cb) { try { var engine = requires['arc-templates']; if (!engine) { var Engine = require('arc-templates/dist/es5'); engine = requires['arc-templates'] = new Engine({ filesystem: consolidateFileSystem }); } var compiler = cache(options) || cache(options, engine.compileString(str, options.filename)); compiler.then(function(func) { return func(options); }) .then(function(result) { cb(null, result.content); }) .catch(cb); } catch (err) { cb(err); } }); }; /** * Vash support */ exports.vash = fromStringRenderer('vash'); /** * Vash string support */ exports.vash.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.vash || (requires.vash = require('vash')); try { // helper system : https://github.com/kirbysayshi/vash#helper-system if (options.helpers) { for (var key in options.helpers) { if (!options.helpers.hasOwnProperty(key) || typeof options.helpers[key] !== 'function') { continue; } engine.helpers[key] = options.helpers[key]; } } var tmpl = cache(options) || cache(options, engine.compile(str, options)); tmpl(options, function sealLayout(err, ctx) { if (err) cb(err); ctx.finishLayout(); cb(null, ctx.toString().replace(/\n$/, '')); }); } catch (err) { cb(err); } }); }; /** * Slm support. */ exports.slm = fromStringRenderer('slm'); /** * Slm string support. */ exports.slm.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.slm || (requires.slm = require('slm')); try { var tmpl = cache(options) || cache(options, engine.compile(str, options)); cb(null, tmpl(options)); } catch (err) { cb(err); } }); }; /** * Marko support. */ exports.marko = function(path, options, cb) { return promisify(cb, function(cb) { var engine = requires.marko || (requires.marko = require('marko')); options.writeToDisk = !!options.cache; try { var tmpl = cache(options) || cache(options, engine.load(path, options)); tmpl.renderToString(options, cb); } catch (err) { cb(err); } }); }; /** * Marko string support. */ exports.marko.render = function(str, options, cb) { return promisify(cb, function(cb) { var engine = requires.marko || (requires.marko = require('marko')); options.writeToDisk = !!options.cache; options.filename = options.filename || 'string.marko'; try { var tmpl = cache(options) || cache(options, engine.load(options.filename, str, options)); tmpl.renderToString(options, cb); } catch (err) { cb(err); } }); }; /** * Teacup support. */ exports.teacup = function(path, options, cb) { return promisify(cb, function(cb) { var engine = requires.teacup || (requires.teacup = require('teacup/lib/express')); require.extensions['.teacup'] = require.extensions['.coffee']; if (path[0] !== '/') { path = join(process.cwd(), path); } if (!options.cache) { var callback = cb; cb = function() { delete require.cache[path]; callback.apply(this, arguments); }; } engine.renderFile(path, options, cb); }); }; /** * Teacup string support. */ exports.teacup.render = function(str, options, cb) { var coffee = require('coffee-script'); var vm = require('vm'); var sandbox = { module: {exports: {}}, require: require }; return promisify(cb, function(cb) { vm.runInNewContext(coffee.compile(str), sandbox); var tmpl = sandbox.module.exports; cb(null, tmpl(options)); }); }; /** * expose the instance of the engine */ exports.requires = requires; consolidate.js-0.15.1/package.json000066400000000000000000000041331325405240400170030ustar00rootroot00000000000000{ "name": "consolidate", "description": "Template engine consolidation library", "version": "0.15.1", "homepage": "https://github.com/tj/consolidate.js", "author": "TJ Holowaychuk ", "repository": "tj/consolidate.js", "bugs": { "url": "https://github.com/tj/consolidate.js/issues" }, "license": "MIT", "files": [ "index.js", "lib" ], "main": "index.js", "engines": { "node": ">= 0.10.0" }, "scripts": { "lint": "eslint .", "pretest": "npm run lint", "test": "mocha" }, "dependencies": { "bluebird": "^3.1.1" }, "devDependencies": { "arc-templates": "^0.5.1", "atpl": ">=0.7.6", "babel-core": "^6.7.6", "babel-preset-react": "^6.5.0", "bracket-template": "^1.1.4", "coffee-script": "^1.11.1", "dot": "^1.0.1", "dust": "^0.3.0", "dustjs-helpers": "^1.1.1", "dustjs-linkedin": "^2.7.2", "eco": "^1.1.0-rc-3", "ect": "^0.5.9", "ejs": "^2.3.4", "eslint": "^3.7.1", "eslint-config-standard": "^6.2.0", "eslint-plugin-promise": "^3.3.1", "eslint-plugin-standard": "^2.0.1", "haml-coffee": "^1.4.0", "hamlet": "^0.3.3", "hamljs": "^0.6.1", "handlebars": "^4.0.5", "hogan.js": "^3.0.2", "htmling": "^0.0.7", "jade": "^1.9.1", "jazz": "^0.0.18", "jqtpl": "~1.1.0", "just": "^0.1.8", "liquid-node": "^2.6.1", "liquor": "^0.0.5", "lodash": "^4.0.0", "marko": "^3.12.0", "mocha": "^3.1.2", "mote": "^0.2.0", "mustache": "^2.2.1", "nunjucks": "^3.0.0", "plates": "~0.4.8", "pug": "^2.0.0-beta6", "qejs": "^3.0.5", "ractive": "^0.8.4", "react": "^15.3.2", "react-dom": "^15.3.2", "should": "*", "slm": "^0.5.0", "swig-templates": "^2.0.2", "swig": "^1.4.1", "teacup": "^2.0.0", "templayed": ">=0.2.3", "tinyliquid": "^0.2.30", "toffee": "^0.1.12", "twig": "^0.10.0", "underscore": "^1.3.3", "vash": "^0.12.2", "walrus": "^0.10.1", "whiskers": "^0.4.0", "velocityjs": "^0.8.2" }, "keywords": [ "engine", "template", "view" ] } consolidate.js-0.15.1/test/000077500000000000000000000000001325405240400154735ustar00rootroot00000000000000consolidate.js-0.15.1/test/consolidate.js000066400000000000000000000050061325405240400203360ustar00rootroot00000000000000var cons = require('../'); /*eslint-env node*/ /*eslint quotes: [2, "single"] */ require('./shared').test('jade'); require('./shared').test('pug'); // testing tinyliquid cons.requires.liquid = require('tinyliquid'); require('./shared').test('liquid'); require('./shared/filters').test('liquid'); require('./shared/includes').test('liquid'); // testing liquid-node cons.requires.liquid = require('liquid-node'); require('./shared').test('liquid'); require('./shared/filters').test('liquid'); require('./shared/includes').test('liquid'); require('./shared').test('ejs'); require('./shared').test('swig'); require('./shared').test('jazz'); require('./shared').test('jqtpl'); require('./shared').test('liquor'); require('./shared').test('haml'); require('./shared').test('hamlet'); require('./shared').test('eco'); require('./shared').test('whiskers'); require('./shared').test('haml-coffee'); require('./shared').test('hogan'); require('./shared/partials').test('hogan'); require('./shared').test('dust'); require('./shared/partials').test('dust'); require('./shared/dust').test('dust'); require('./shared').test('handlebars'); require('./shared/partials').test('handlebars'); require('./shared/helpers').test('handlebars'); require('./shared').test('underscore'); require('./shared/partials').test('underscore'); require('./shared').test('lodash'); require('./shared').test('qejs'); require('./shared').test('walrus'); require('./shared').test('mustache'); require('./shared/partials').test('mustache'); require('./shared').test('just'); require('./shared').test('ect'); require('./shared').test('mote'); require('./shared').test('toffee'); require('./shared').test('atpl'); require('./shared').test('plates'); require('./shared').test('templayed'); require('./shared').test('twig'); require('./shared').test('dot'); require('./shared').test('ractive'); require('./shared/partials').test('ractive'); require('./shared').test('nunjucks'); require('./shared/filters').test('nunjucks'); require('./shared/includes').test('nunjucks'); require('./shared').test('htmling'); require('./shared/react').test('react'); require('./shared').test('vash'); require('./shared/helpers').test('vash'); require('./shared').test('slm'); require('./shared').test('arc-templates'); require('./shared/filters').test('arc-templates'); require('./shared/includes').test('arc-templates'); require('./shared/partials').test('arc-templates'); require('./shared').test('marko'); require('./shared').test('bracket'); require('./shared').test('teacup'); require('./shared').test('velocityjs'); consolidate.js-0.15.1/test/fixtures/000077500000000000000000000000001325405240400173445ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/arc-templates/000077500000000000000000000000001325405240400221055ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/arc-templates/_layout.arc-templates000066400000000000000000000000471325405240400262450ustar00rootroot00000000000000

${ user.name } from partial!

<**>consolidate.js-0.15.1/test/fixtures/arc-templates/filters.arc-templates000066400000000000000000000000371325405240400262400ustar00rootroot00000000000000${ filters.toupper(user.name) }consolidate.js-0.15.1/test/fixtures/arc-templates/include.arc-templates000066400000000000000000000000521325405240400262100ustar00rootroot00000000000000<( (includeDir + '/user.arc-templates') )>consolidate.js-0.15.1/test/fixtures/arc-templates/user.arc-templates000066400000000000000000000000251325405240400255430ustar00rootroot00000000000000

${ user.name }

consolidate.js-0.15.1/test/fixtures/arc-templates/user_partial.arc-templates000066400000000000000000000000751325405240400272640ustar00rootroot00000000000000

${ user.name }

consolidate.js-0.15.1/test/fixtures/atpl/000077500000000000000000000000001325405240400203045ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/atpl/user.atpl000066400000000000000000000000241325405240400221400ustar00rootroot00000000000000

{{user.name}}

consolidate.js-0.15.1/test/fixtures/bracket/000077500000000000000000000000001325405240400207575ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/bracket/user.bracket000066400000000000000000000000351325405240400232700ustar00rootroot00000000000000

[[= model.user.name ]]

consolidate.js-0.15.1/test/fixtures/dot/000077500000000000000000000000001325405240400201325ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/dot/user.dot000066400000000000000000000000311325405240400216120ustar00rootroot00000000000000

{{=it.user.name}}

consolidate.js-0.15.1/test/fixtures/dust/000077500000000000000000000000001325405240400203235ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/dust/_partial.dust000066400000000000000000000000401325405240400230110ustar00rootroot00000000000000

{user.name} from partial!

consolidate.js-0.15.1/test/fixtures/dust/user.dust000066400000000000000000000000221325405240400221740ustar00rootroot00000000000000

{user.name}

consolidate.js-0.15.1/test/fixtures/dust/user_partial.dust000066400000000000000000000000371325405240400237160ustar00rootroot00000000000000{>_partial/}

{user.name}

consolidate.js-0.15.1/test/fixtures/dust/user_template_name.dust000066400000000000000000000000441325405240400250730ustar00rootroot00000000000000

{user.name}

{@templateName/} consolidate.js-0.15.1/test/fixtures/eco/000077500000000000000000000000001325405240400201125ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/eco/user.eco000066400000000000000000000000301325405240400215510ustar00rootroot00000000000000

<%= @user.name %>

consolidate.js-0.15.1/test/fixtures/ect/000077500000000000000000000000001325405240400201175ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/ect/user.ect000066400000000000000000000000301325405240400215630ustar00rootroot00000000000000

<%= @user.name %>

consolidate.js-0.15.1/test/fixtures/ejs/000077500000000000000000000000001325405240400201255ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/ejs/user.ejs000066400000000000000000000000271325405240400216050ustar00rootroot00000000000000

<%= user.name %>

consolidate.js-0.15.1/test/fixtures/haml-coffee/000077500000000000000000000000001325405240400215125ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/haml-coffee/user.haml-coffee000066400000000000000000000000161325405240400245550ustar00rootroot00000000000000%p= @user.nameconsolidate.js-0.15.1/test/fixtures/haml/000077500000000000000000000000001325405240400202655ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/haml/user.haml000066400000000000000000000000151325405240400221020ustar00rootroot00000000000000%p= user.nameconsolidate.js-0.15.1/test/fixtures/hamlet/000077500000000000000000000000001325405240400206165ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/hamlet/user.hamlet000066400000000000000000000000221325405240400227620ustar00rootroot00000000000000

#{user.name} > consolidate.js-0.15.1/test/fixtures/handlebars/000077500000000000000000000000001325405240400214475ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/handlebars/helpers.handlebars000066400000000000000000000000221325405240400251300ustar00rootroot00000000000000{{safe user.name}}consolidate.js-0.15.1/test/fixtures/handlebars/partials.handlebars000066400000000000000000000000141325405240400253060ustar00rootroot00000000000000{{>partial}}consolidate.js-0.15.1/test/fixtures/handlebars/user.handlebars000066400000000000000000000000241325405240400244460ustar00rootroot00000000000000

{{user.name}}

consolidate.js-0.15.1/test/fixtures/hogan/000077500000000000000000000000001325405240400204405ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/hogan/partials.hogan000066400000000000000000000000141325405240400232700ustar00rootroot00000000000000{{>partial}}consolidate.js-0.15.1/test/fixtures/hogan/user.hogan000066400000000000000000000000241325405240400224300ustar00rootroot00000000000000

{{user.name}}

consolidate.js-0.15.1/test/fixtures/htmling/000077500000000000000000000000001325405240400210065ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/htmling/user.htmling000066400000000000000000000000241325405240400233440ustar00rootroot00000000000000

{{user.name}}

consolidate.js-0.15.1/test/fixtures/jade/000077500000000000000000000000001325405240400202475ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/jade/user.jade000066400000000000000000000000141325405240400220450ustar00rootroot00000000000000p= user.nameconsolidate.js-0.15.1/test/fixtures/jazz/000077500000000000000000000000001325405240400203225ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/jazz/user.jazz000066400000000000000000000000221325405240400221720ustar00rootroot00000000000000

{user.name}

consolidate.js-0.15.1/test/fixtures/jqtpl/000077500000000000000000000000001325405240400204765ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/jqtpl/user.jqtpl000066400000000000000000000000231325405240400225230ustar00rootroot00000000000000

${user.name}

consolidate.js-0.15.1/test/fixtures/just/000077500000000000000000000000001325405240400203315ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/just/user.just000066400000000000000000000000271325405240400222150ustar00rootroot00000000000000

<%= user.name %>

consolidate.js-0.15.1/test/fixtures/kernel/000077500000000000000000000000001325405240400206245ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/kernel/user.kernel000066400000000000000000000000221325405240400227760ustar00rootroot00000000000000

{user.name}

consolidate.js-0.15.1/test/fixtures/liquid/000077500000000000000000000000001325405240400206335ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/liquid/filters.liquid000066400000000000000000000000271325405240400235130ustar00rootroot00000000000000{{user.name | toupper}}consolidate.js-0.15.1/test/fixtures/liquid/footer.html000066400000000000000000000000211325405240400230100ustar00rootroot00000000000000
consolidate.js-0.15.1/test/fixtures/liquid/include.liquid000066400000000000000000000001051325405240400234630ustar00rootroot00000000000000{% include user %} {% include sub/file %} {% include "footer.html" %}consolidate.js-0.15.1/test/fixtures/liquid/sub/000077500000000000000000000000001325405240400214245ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/liquid/sub/file.liquid000066400000000000000000000000231325405240400235470ustar00rootroot00000000000000
consolidate.js-0.15.1/test/fixtures/liquid/user.liquid000066400000000000000000000000241325405240400230160ustar00rootroot00000000000000

{{user.name}}

consolidate.js-0.15.1/test/fixtures/liquor/000077500000000000000000000000001325405240400206575ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/liquor/user.liquor000066400000000000000000000000231325405240400230650ustar00rootroot00000000000000

#{user.name}

consolidate.js-0.15.1/test/fixtures/lodash/000077500000000000000000000000001325405240400206165ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/lodash/user.lodash000066400000000000000000000000271325405240400227670ustar00rootroot00000000000000

<%- user.name %>

consolidate.js-0.15.1/test/fixtures/marko/000077500000000000000000000000001325405240400204555ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/marko/user.marko000066400000000000000000000000271325405240400224650ustar00rootroot00000000000000p -- ${data.user.name} consolidate.js-0.15.1/test/fixtures/mote/000077500000000000000000000000001325405240400203105ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/mote/user.mote000066400000000000000000000000241325405240400221500ustar00rootroot00000000000000

{{user.name}}

consolidate.js-0.15.1/test/fixtures/mustache/000077500000000000000000000000001325405240400211555ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/mustache/partials.mustache000066400000000000000000000000141325405240400245220ustar00rootroot00000000000000{{>partial}}consolidate.js-0.15.1/test/fixtures/mustache/user.mustache000066400000000000000000000000411325405240400236610ustar00rootroot00000000000000

{{#user}}{{name}}{{/user}}

consolidate.js-0.15.1/test/fixtures/nunjucks/000077500000000000000000000000001325405240400212045ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/nunjucks/_base_layout.nunjucks000066400000000000000000000000771325405240400254400ustar00rootroot00000000000000
{%block content%}{%endblock%}
consolidate.js-0.15.1/test/fixtures/nunjucks/filters.nunjucks000066400000000000000000000000251325405240400244330ustar00rootroot00000000000000{{user.name | upper}}consolidate.js-0.15.1/test/fixtures/nunjucks/include.nunjucks000066400000000000000000000000351325405240400244070ustar00rootroot00000000000000{% include 'user.nunjucks' %}consolidate.js-0.15.1/test/fixtures/nunjucks/layouts.nunjucks000066400000000000000000000001351325405240400244650ustar00rootroot00000000000000{% extends '_base_layout.nunjucks' %} {% block content %}

{{user.name}}

{% endblock %} consolidate.js-0.15.1/test/fixtures/nunjucks/user.nunjucks000066400000000000000000000000241325405240400237400ustar00rootroot00000000000000

{{user.name}}

consolidate.js-0.15.1/test/fixtures/plates/000077500000000000000000000000001325405240400206345ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/plates/user.html000066400000000000000000000000471325405240400225010ustar00rootroot00000000000000

consolidate.js-0.15.1/test/fixtures/plates/user.plates000066400000000000000000000000471325405240400230250ustar00rootroot00000000000000

consolidate.js-0.15.1/test/fixtures/pug/000077500000000000000000000000001325405240400201375ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/pug/user.pug000066400000000000000000000000141325405240400216250ustar00rootroot00000000000000p= user.nameconsolidate.js-0.15.1/test/fixtures/qejs/000077500000000000000000000000001325405240400203065ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/qejs/user.qejs000066400000000000000000000000271325405240400221470ustar00rootroot00000000000000

<%= user.name %>

consolidate.js-0.15.1/test/fixtures/ractive/000077500000000000000000000000001325405240400210015ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/ractive/partials.ractive000066400000000000000000000000141325405240400241720ustar00rootroot00000000000000{{>partial}}consolidate.js-0.15.1/test/fixtures/ractive/user.ractive000066400000000000000000000000411325405240400233310ustar00rootroot00000000000000

{{#user}}{{name}}{{/user}}

consolidate.js-0.15.1/test/fixtures/react/000077500000000000000000000000001325405240400204425ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/react/base.html000066400000000000000000000001121325405240400222340ustar00rootroot00000000000000{{title}}{{content}}consolidate.js-0.15.1/test/fixtures/react/user.react000066400000000000000000000003071325405240400224400ustar00rootroot00000000000000"use strict"; var React = require('react'); class User extends React.Component { render() { return (

{this.props.user.name}

); } }; module.exports = User; consolidate.js-0.15.1/test/fixtures/slm/000077500000000000000000000000001325405240400201375ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/slm/user.slm000066400000000000000000000000231325405240400216250ustar00rootroot00000000000000p = this.user.name consolidate.js-0.15.1/test/fixtures/swig/000077500000000000000000000000001325405240400203155ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/swig/user.swig000066400000000000000000000000241325405240400221620ustar00rootroot00000000000000

{{user.name}}

consolidate.js-0.15.1/test/fixtures/teacup/000077500000000000000000000000001325405240400206255ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/teacup/user.teacup000066400000000000000000000001321325405240400230020ustar00rootroot00000000000000{renderable, p} = require 'teacup' module.exports = renderable ({user}) -> p user.name consolidate.js-0.15.1/test/fixtures/templayed/000077500000000000000000000000001325405240400213305ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/templayed/user.templayed000066400000000000000000000000241325405240400242100ustar00rootroot00000000000000

{{user.name}}

consolidate.js-0.15.1/test/fixtures/toffee/000077500000000000000000000000001325405240400206145ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/toffee/user.toffee000066400000000000000000000000231325405240400227570ustar00rootroot00000000000000

#{user.name}

consolidate.js-0.15.1/test/fixtures/twig/000077500000000000000000000000001325405240400203165ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/twig/user.twig000066400000000000000000000000261325405240400221660ustar00rootroot00000000000000

{{ user.name }}

consolidate.js-0.15.1/test/fixtures/underscore/000077500000000000000000000000001325405240400215155ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/underscore/partials.underscore000066400000000000000000000000451325405240400254260ustar00rootroot00000000000000<%= partials.partial({user: user}) %>consolidate.js-0.15.1/test/fixtures/underscore/user.underscore000066400000000000000000000000271325405240400245650ustar00rootroot00000000000000

<%- user.name %>

consolidate.js-0.15.1/test/fixtures/vash/000077500000000000000000000000001325405240400203055ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/vash/helpers.vash000066400000000000000000000000621325405240400226300ustar00rootroot00000000000000@html.lowerCase(model.user.name) consolidate.js-0.15.1/test/fixtures/vash/user.vash000066400000000000000000000000301325405240400221370ustar00rootroot00000000000000

@model.user.name

consolidate.js-0.15.1/test/fixtures/velocityjs/000077500000000000000000000000001325405240400215375ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/velocityjs/user.velocityjs000066400000000000000000000000221325405240400246240ustar00rootroot00000000000000

$user.name

consolidate.js-0.15.1/test/fixtures/walrus/000077500000000000000000000000001325405240400206615ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/walrus/user.walrus000066400000000000000000000000261325405240400230740ustar00rootroot00000000000000

{{ user.name }}

consolidate.js-0.15.1/test/fixtures/whiskers/000077500000000000000000000000001325405240400212035ustar00rootroot00000000000000consolidate.js-0.15.1/test/fixtures/whiskers/user.whiskers000066400000000000000000000000221325405240400237340ustar00rootroot00000000000000

{user.name}

consolidate.js-0.15.1/test/mocha.opts000066400000000000000000000000511325405240400174650ustar00rootroot00000000000000--growl --require should --reporter spec consolidate.js-0.15.1/test/shared/000077500000000000000000000000001325405240400167415ustar00rootroot00000000000000consolidate.js-0.15.1/test/shared/dust.js000066400000000000000000000020551325405240400202600ustar00rootroot00000000000000/*eslint-env node, mocha */ var cons = require('../../'); var fs = require('fs'); // var should = require('should'); exports.test = function(name) { var user = { name: 'Tobi' }; describe(name, function() { // Use case: return upper case string. it('should support fetching template name from the context', function(done) { var viewsDir = 'test/fixtures/' + name; var templatePath = viewsDir + '/user_template_name.' + name; var str = fs.readFileSync(templatePath).toString(); var locals = { user: user, views: viewsDir, filename: templatePath }; if (name === 'dust') { var dust = require('dustjs-helpers'); dust.helpers.templateName = function(chunk, context) { return chunk.write(context.getTemplateName()); }; cons.requires.dust = dust; } cons[name].render(str, locals, function(err, html) { if (err) return done(err); html.should.eql('

Tobi

user_template_name'); return done(); }); }); }); }; consolidate.js-0.15.1/test/shared/filters.js000066400000000000000000000012041325405240400207440ustar00rootroot00000000000000var cons = require('../../'); var fs = require('fs'); exports.test = function(name) { var user = { name: 'Tobi' }; describe(name, function() { // Use case: return upper case string. it('should support filters', function(done) { var str = fs.readFileSync('test/fixtures/' + name + '/filters.' + name).toString(); var locals = { user: user, filters: { toupper: function(object) { return object.toUpperCase(); }}}; cons[name].render(str, locals, function(err, html) { if (err) return done(err); html.should.eql('TOBI'); return done(); }); }); }); }; consolidate.js-0.15.1/test/shared/helpers.js000066400000000000000000000032271325405240400207450ustar00rootroot00000000000000 var cons = require('../../'); var handlebars = require('handlebars'); var fs = require('fs'); var readFile = fs.readFile; var readFileSync = fs.readFileSync; exports.test = function(name) { describe(name, function() { afterEach(function() { fs.readFile = readFile; fs.readFileSync = readFileSync; }); var user; if (name === 'handlebars') { user = { name: 'Tobi' }; // Use case: return safe HTML that won’t be escaped in the final render. it('should support helpers', function(done) { var str = fs.readFileSync('test/fixtures/' + name + '/helpers.' + name).toString(); var locals = { user: user, helpers: { safe: function(object) { return new handlebars.SafeString(object); }}}; cons[name].render(str, locals, function(err, html) { if (err) return done(err); html.should.equal('Tobi'); done(); }); }); } if (name === 'vash') { user = { name: 'Tobi' }; // See this for Vash helper system : https://github.com/kirbysayshi/vash#helper-system // Use case: return as as lower case it('should support helpers', function(done) { var str = fs.readFileSync('test/fixtures/' + name + '/helpers.' + name).toString(); var locals = { user: user, helpers: { lowerCase: function(text) { return text.toLowerCase(); }}}; cons[name].render(str, locals, function(err, html) { if (err) return done(err); html.should.equal('tobi'); done(); }); }); } }); }; consolidate.js-0.15.1/test/shared/includes.js000066400000000000000000000027271325405240400211150ustar00rootroot00000000000000var cons = require('../../'); var fs = require('fs'); exports.test = function(name) { var user = { name: 'Tobi' }; describe(name, function() { it('should support includes', function(done) { var str = fs.readFileSync('test/fixtures/' + name + '/include.' + name).toString(); var viewsDir = 'test/fixtures/' + name; var locals = { user: user, settings: { views: viewsDir } }; if (name === 'liquid' || name === 'arc-templates') { locals.includeDir = viewsDir; } cons[name].render(str, locals, function(err, html) { if (err) return done(err); try { if (name === 'liquid') { html.should.eql('

Tobi

'); } else { html.should.eql('

Tobi

'); } return done(); } catch (e) { return done(e); } }); }); if (name === 'nunjucks') { it('should support extending views', function(done) { var str = fs.readFileSync('test/fixtures/' + name + '/layouts.' + name).toString(); var locals = {user: user, settings: {views: 'test/fixtures/' + name}}; cons[name].render(str, locals, function(err, html) { if (err) return done(err); try { html.should.eql('

Tobi

'); return done(); } catch (e) { return done(e); } }); }); } }); }; consolidate.js-0.15.1/test/shared/index.js000066400000000000000000000063411325405240400204120ustar00rootroot00000000000000 var cons = require('../../'); var fs = require('fs'); var readFile = fs.readFile; var readFileSync = fs.readFileSync; exports.test = function(name) { var user = { name: 'Tobi' }; describe(name, function() { afterEach(function() { fs.readFile = readFile; fs.readFileSync = readFileSync; }); it('should support locals', function(done) { var path = 'test/fixtures/' + name + '/user.' + name; var locals = { user: user }; cons[name](path, locals, function(err, html) { if (err) return done(err); html.should.match(/Tobi/); done(); }); }); it('should not cache by default', function(done) { var path = 'test/fixtures/' + name + '/user.' + name; var locals = { user: user }; var calls = 0; fs.readFileSync = function() { ++calls; return readFileSync.apply(this, arguments); }; fs.readFile = function() { ++calls; readFile.apply(this, arguments); }; cons[name](path, locals, function(err, html) { if (err) return done(err); html.should.match(/Tobi/); cons[name](path, locals, function(err, html) { if (err) return done(err); html.should.match(/Tobi/); calls.should.equal(name === 'atpl' ? 4 : 2); done(); }); }); }); it('should support caching', function(done) { var path = 'test/fixtures/' + name + '/user.' + name; var locals = { user: user, cache: true }; cons[name](path, locals, function(err, html) { if (err) return done(err); fs.readFile = function(path) { done(new Error('fs.readFile() called with ' + path)); }; html.should.match(/Tobi/); cons[name](path, locals, function(err, html) { if (err) return done(err); html.should.match(/Tobi/); done(); }); }); }); it('should support rendering a string', function(done) { var str = fs.readFileSync('test/fixtures/' + name + '/user.' + name).toString(); var locals = { user: user }; cons[name].render(str, locals, function(err, html) { if (err) return done(err); html.should.match(/Tobi/); done(); }); }); it('should return a promise if no callback provided', function(done) { var path = 'test/fixtures/' + name + '/user.' + name; var locals = { user: user }; var result = cons[name](path, locals); result.then(function(html) { html.should.match(/Tobi/); done(); }) .catch(function(err) { done(err); }); }); it('should return a promise if no callback provided (string)', function(done) { var str = fs.readFileSync('test/fixtures/' + name + '/user.' + name).toString(); var locals = { user: user }; var result = cons[name].render(str, locals); result.then(function(html) { html.should.match(/Tobi/); done(); }) .catch(function(err) { done(err); }); }); it('should be exposed in the requires object', function() { var should = require('should'); var requiredName = name; should.exist(cons.requires[requiredName]); }); }); }; consolidate.js-0.15.1/test/shared/partials.js000066400000000000000000000040331325405240400211160ustar00rootroot00000000000000 var cons = require('../../'); var join = require('path').join; var fs = require('fs'); var readFile = fs.readFile; var readFileSync = fs.readFileSync; exports.test = function(name) { var user = { name: 'Tobi' }; describe(name, function() { afterEach(function() { fs.readFile = readFile; fs.readFileSync = readFileSync; }); if (name === 'dust' || name === 'arc-templates') { it('should support rendering a partial', function(done) { var str = fs.readFileSync('test/fixtures/' + name + '/user_partial.' + name).toString(); var locals = { user: user, views: './test/fixtures/' + name }; cons[name].render(str, locals, function(err, html) { if (err) return done(err); html.should.equal('

Tobi from partial!

Tobi

'); done(); }); }); } else { it('should support partials', function(done) { var path = 'test/fixtures/' + name + '/partials.' + name; var locals = { user: user, partials: { partial: 'user' } }; cons[name](path, locals, function(err, html) { if (err) return done(err); html.should.equal('

Tobi

'); done(); }); }); it('should support absolute path partial', function(done) { var path = 'test/fixtures/' + name + '/partials.' + name; var locals = {user: user, partials: {partial: join(__dirname, '/../../test/fixtures/', name, '/user') }}; cons[name](path, locals, function(err, html) { if (err) return done(err); html.should.equal('

Tobi

'); done(); }); }); it('should support relative path partial', function(done) { var path = 'test/fixtures/' + name + '/partials.' + name; var locals = {user: user, partials: {partial: '../' + name + '/user' }}; cons[name](path, locals, function(err, html) { if (err) return done(err); html.should.equal('

Tobi

'); done(); }); }); } }); }; consolidate.js-0.15.1/test/shared/react.js000066400000000000000000000046141325405240400204020ustar00rootroot00000000000000/*eslint-env node, mocha */ /*eslint quotes: [2, "single"] */ var consolidate = require('../../'); var fs = require('fs'); var readFile = fs.readFile; var readFileSync = fs.readFileSync; exports.test = function(name) { 'use strict'; var user = { name: 'Tobi' }; var cons; describe(name, function() { beforeEach(function() { cons = consolidate; fs.readFile = readFile; fs.readFileSync = readFileSync; }); it('should support locals', function(done) { var path = 'test/fixtures/' + name + '/user.' + name; var locals = { user: user }; cons[name](path, locals, function(err, html) { if (err) { return done(err); } html.should.equal('

Tobi

'); done(); }); }); it('should support promises', function(done) { var path = 'test/fixtures/' + name + '/user.' + name; var locals = { user: user }; cons[name](path, locals) .then(function(html) { html.should.equal('

Tobi

'); done(); }) .catch(function(err) { done(err); }); }); it('should support rendering a string', function(done) { var str = fs.readFileSync('test/fixtures/' + name + '/user.' + name).toString(); var locals = { user: user }; cons[name].render(str, locals, function(err, html) { if (err) { return done(err); } html.should.equal('

Tobi

'); done(); }); }); it('should support promises from a string', function(done) { var str = fs.readFileSync('test/fixtures/' + name + '/user.' + name).toString(); var locals = { user: user }; cons[name].render(str, locals) .then(function(html) { html.should.equal('

Tobi

'); done(); }) .catch(function(err) { return done(err); }); }); it('should support rendering into a base template', function(done) { var path = 'test/fixtures/' + name + '/user.' + name; var locals = { user: user, base: 'test/fixtures/' + name + '/base.html', title: 'My Title' }; cons[name](path, locals, function(err, html) { if (err) { return done(err); } html.should.equal('My Title

Tobi

'); done(); }); }); }); };