Skip to content

Commit 830ae63

Browse files
committed
Fix: nested includes
Fixes: #4
2 parents b3e4219 + 981fb37 commit 830ae63

File tree

1 file changed

+23
-7
lines changed

1 file changed

+23
-7
lines changed

src/render.js

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,30 @@
1+
import {readFileSync} from 'fs';
12
import {compile} from 'ejs';
23

34
export function render(ctx, src, data) {
4-
let template = compile(src, {
5-
filename: ctx.resourcePath,
6-
delimiter: data.delimiter,
7-
context: data.context
8-
});
5+
let filename = ctx.resourcePath;
6+
let delimiter = data.delimiter;
7+
let context = data.context;
8+
9+
let tpl = compile(src, {filename, delimiter, context});
910

1011
return {
11-
rendered: template(data),
12-
deps: template.dependencies
12+
rendered: tpl(data),
13+
deps: getDeps(tpl.dependencies, {delimiter, context})
1314
};
1415
}
16+
17+
function getDeps(deps, opts, result=[]) {
18+
deps.forEach(name => {
19+
result.push(name);
20+
getDeps(getOwnDeps(name, opts), opts, result);
21+
});
22+
23+
return result;
24+
}
25+
26+
function getOwnDeps(filename, {delimiter, context}) {
27+
let src = readFileSync(filename, 'utf8');
28+
let tpl = compile(src, {filename, delimiter, context});
29+
return tpl.dependencies;
30+
}

0 commit comments

Comments
 (0)