Skip to content

Commit

Permalink
Merge pull request #6 from JacksonTian/fix_tag_setting
Browse files Browse the repository at this point in the history
Fix #5, when ejs refererences is differences, setting tag will fails
  • Loading branch information
fengmk2 committed Feb 26, 2014
2 parents cf2518d + 4f9675b commit d6afd31
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 5 deletions.
2 changes: 2 additions & 0 deletions README.md
Expand Up @@ -73,6 +73,8 @@ app.listen(8080);
* root: __dirname + '/views',
* cache: true, // must set `true` in production env
* layout: 'layout.html', // or false for no layout
* open: "<%", // ejs open tag, default is '<%'
* close: "%>", // ejs close tag, default is '%>'
* helpers: {
* config: config,
* sitename: 'NodeBlog Engine',
Expand Down
18 changes: 13 additions & 5 deletions lib/render.js
Expand Up @@ -20,6 +20,8 @@ var settings = {
layout: 'layout.html',
viewExt: '', // view default extname
_filters: {},
open: ejs.open || "<%",
close: ejs.close || "%>"
};

for (var k in filters) {
Expand All @@ -39,10 +41,8 @@ function _render_tpl(fn, options, callback) {
}

var reg_meta = /[\\\^$*+?{}.()|\[\]]/g;
var open = ejs.open || "<%";
var close = ejs.close || "%>";
var PARTIAL_PATTERN_RE = new RegExp(open.replace(reg_meta, "\\$&") +
"[-=]\\s*partial\\((.+)\\)\\s*" + close.replace(reg_meta, "\\$&"), 'g');
var PARTIAL_PATTERN_RE;

/**
* add support for <%- partial('view') %> function
* rather than realtime compiling, this implemention simply statically 'include' the partial view file
Expand Down Expand Up @@ -90,7 +90,12 @@ function _render(view, options, callback) {
}
var tpl = partial(data);
// fn = ejs.compile(tpl, {filename: viewpath, compileDebug: true, debug: true, _with: settings._with});
fn = ejs.compile(tpl, {filename: viewpath, _with: settings._with});
fn = ejs.compile(tpl, {
filename: viewpath,
_with: settings._with,
open: settings.open,
close: settings.close
});
if (settings.cache) {
cache[view] = fn;
}
Expand Down Expand Up @@ -210,6 +215,9 @@ function middleware(options) {
for (var k in options) {
settings[k] = options[k];
}
// set the tag format
PARTIAL_PATTERN_RE = new RegExp(settings.open.replace(reg_meta, "\\$&") +
"[-=]\\s*partial\\((.+)\\)\\s*" + settings.close.replace(reg_meta, "\\$&"), 'g');
return function (req, res, next) {
req.next = next;
if (!res.req) {
Expand Down
49 changes: 49 additions & 0 deletions test/render_tag.test.js
@@ -0,0 +1,49 @@
/*!
* connect-render - test/render_tag.test.js
* Copyright(c) 2013 JacksonTian <shyvo1987@gmail.com>
* MIT Licensed
*/

/**
* Module dependencies.
*/

var path = require('path');
var fs = require('fs');
var connect = require('connect');
var request = require('supertest');
var render = require('../lib/render');
var should = require('should');

var options = {
root: path.join(__dirname, 'views'),
layout: false,
open: '{{',
close: '}}',
cache: true // `false` for debug
};

var app = connect(render(options));

app.use(function (req, res) {
if (req.url === '/mustache') {
return res.render('mustache.html', { name: 'fengmk2' });
}

res.render('index.html', { name: 'fengmk2' });
});

app.use(function (err, req, res, next) {
console.log(err.stack);
next(err);
});

describe('render', function () {
describe('tag open/close', function () {
it('should ok with {{}}', function (done) {
request(app).get('/mustache')
.expect(200)
.expect('Hello, I am fengmk2.\n', done);
});
});
});
1 change: 1 addition & 0 deletions test/views/mustache.html
@@ -0,0 +1 @@
Hello, I am {{=name}}.

0 comments on commit d6afd31

Please sign in to comment.