From 6fb0e00f036fa7d5bf7c56abe0b572d868ed91a3 Mon Sep 17 00:00:00 2001 From: Egil Moeller Date: Tue, 13 Mar 2012 17:31:40 +0100 Subject: [PATCH] Bugfixes for eejs --- src/node/eejs/eejs.js | 28 ++++++++++++++-------------- src/node/eejs/examples/bar.ejs | 2 -- src/node/eejs/examples/foo.ejs | 2 -- src/package.json | 3 ++- 4 files changed, 16 insertions(+), 19 deletions(-) diff --git a/src/node/eejs/eejs.js b/src/node/eejs/eejs.js index 8faaab800..7401b0c48 100644 --- a/src/node/eejs/eejs.js +++ b/src/node/eejs/eejs.js @@ -23,15 +23,14 @@ var ejs = require("ejs"); var fs = require("fs"); var path = require("path"); +exports.info = { + buf_stack: [], + block_stack: [], + blocks: {}, + file_stack: [], +}; + exports.init = function (b, recursive) { - if (!exports.info) { - exports.info = { - buf_stack: [], - block_stack: [], - blocks: {}, - filestack: [], - } - } exports.info.buf = b; } @@ -75,16 +74,17 @@ exports.require = function (name, args) { if (!exports.info) exports.init(null); - if ((name.indexOf("./") == 0 || name.indexOf("../") == 0) && exports.info.file_stack) { - name = path.join(exports.info.file_stack[exports.info.file_stack.length-1], name); + if ((name.indexOf("./") == 0 || name.indexOf("../") == 0) && exports.info.file_stack.length) { + name = path.join(path.dirname(exports.info.file_stack[exports.info.file_stack.length-1]), name); } var ejspath = require.resolve(name) - exports.info.file_stack.push(ejpath); + args.e = exports; + var template = '<% e.init(buf); %>' + fs.readFileSync(ejspath).toString(); + + exports.info.file_stack.push(ejspath); exports.info.buf_stack.push(exports.info.buf); - var res = ejs.render( - fs.readFileSync(ejspath).toString(), - args); + var res = ejs.render(template, args); exports.info.buf = exports.info.buf_stack.pop(); exports.info.file_stack.pop(); diff --git a/src/node/eejs/examples/bar.ejs b/src/node/eejs/examples/bar.ejs index 14ed975e7..6a2cc4bab 100644 --- a/src/node/eejs/examples/bar.ejs +++ b/src/node/eejs/examples/bar.ejs @@ -1,5 +1,3 @@ -<% var e = require("./eejs.js"); e.init(buf); %> - a <% e.begin_block("bar"); %> A diff --git a/src/node/eejs/examples/foo.ejs b/src/node/eejs/examples/foo.ejs index 5dcac61c6..268882cb1 100644 --- a/src/node/eejs/examples/foo.ejs +++ b/src/node/eejs/examples/foo.ejs @@ -1,5 +1,3 @@ -<% var e = require("./eejs.js"); e.init(buf); %> - <% e.begin_define_block("foo"); %> YY <% e.end_define_block(); %> diff --git a/src/package.json b/src/package.json index b81f724f2..556b1c494 100644 --- a/src/package.json +++ b/src/package.json @@ -23,7 +23,8 @@ "log4js" : "0.4.1", "jsdom-nocontextifiy" : "0.2.10", "async-stacktrace" : "0.0.2", - "npm" : "1.1" + "npm" : "1.1", + "ejs" : "0.6.1" }, "devDependencies": { "jshint" : "*"