1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- var _ = require('lodash');
- // TODO(mklabs):
- // - handle cache
- // - implement adpaters for others engines (but do not add hard deps on them,
- // should require manual install for anything that is not an underscore
- // template)
- // - put in multiple files, possibly other packages.
- // engines
- var engines = module.exports;
- // Underscore
- // ----------
- // Underscore templates facade.
- //
- // Special kind of markers `<%%` for opening tags can be used to escape the
- // placeholder opening tag. This is often useful for templates including
- // snippet of templates you don't want to be interpolated.
- var matcher = /<%%([^%]+)%>/g;
- var detecter = /<%%?[^%]+%>/;
- engines.underscore = function underscore(source, data) {
- source = source.replace(matcher, function (m, content) {
- // let's add some funny markers to replace back when templating is done,
- // should be fancy enough to reduce frictions with files using markers like
- // this already.
- return '(;>%%<;)' + content + '(;>%<;)';
- });
- source = _.template(source)(data);
- source = source
- .replace(/\(;>%%<;\)/g, '<%')
- .replace(/\(;>%<;\)/g, '%>');
- return source;
- };
- engines.underscore.detect = function detect(body) {
- return detecter.test(body);
- };
|