This repository has been archived by the owner on Oct 30, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
test-swig.js
43 lines (38 loc) · 1.47 KB
/
test-swig.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
const path = require('path');
const onlyWhitespace = require('./lib/only-whitespace');
const saveFile = require('./lib/save-file');
const swig = require('swig');
const engine = 'swig';
const rootDir = __dirname + '/';
const config = require('./config.json');
const inputDir = rootDir + config.inputDir;
const outputDir = rootDir + config.outputDir + engine + '/';
const templateData = require(rootDir + config.templateDataFile);
const renderer = new swig.Swig({
autoescape: true,
cache: false,
loader: swig.loaders.fs(path.join(inputDir))
});
Object.keys(templateData).forEach(templateName => {
renderTemplate(templateName, templateData[templateName]);
});
function renderTemplate(templateName, data) {
const templateFilename = templateName + config.templateExt;
renderer.renderFile(templateFilename, data, (err, output) => {
if (!err && onlyWhitespace(output)) {
err = { message: config.noOutputMessage }
}
if (err) {
saveError(templateName, err);
} else {
saveFile(path.join(outputDir, templateFilename), output);
}
});
}
function saveError(templateName, err) {
const errorFilename = path.join(outputDir, templateName + config.errorExt);
const templateFilename = inputDir + templateName + config.templateExt;
const pattern = new RegExp('\( on line \\d+\)? in file ' + templateFilename, 'g');
const message = err.message.replace(pattern, '');
saveFile(errorFilename, message);
}