@unclepaul/allcountjs
Version:
The open source framework for rapid business application development with Node.js
37 lines (33 loc) • 1.33 kB
JavaScript
var jade = require('jade');
var _ = require('underscore');
var fs = require('fs');
var viewLookupCache = {};
var p = require('path');
module.exports = function (viewPaths, repositoryService) {
var Parser = jade.Parser;
function AllcountJadeParser() {
Parser.prototype.constructor.apply(this, arguments);
this.viewPaths = _.union([repositoryService.repositoryDir()], _.flatten(viewPaths));
}
AllcountJadeParser.prototype = _.extend(_.clone(Parser.prototype), {
constructor: AllcountJadeParser,
resolvePath: function (path, purpose) {
if ('.jade' != path.substr(-5)) path += '.jade';
if (!_.isUndefined(viewLookupCache[path])) {
return viewLookupCache[path];
}
var viewPath = _.find(this.viewPaths, function (viewPath) {
return fs.existsSync(p.join(viewPath, path)); //TODO get rid of
});
if (viewPath) {
var result = p.join(viewPath, path);
viewLookupCache[path] = result;
return result;
} else {
viewLookupCache[path] = null;
}
return Parser.prototype.resolvePath.apply(this, arguments);
}
});
return AllcountJadeParser;
};