-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
41 lines (34 loc) · 974 Bytes
/
index.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
const path = require('path');
const { saveHTML, readTemplate } = require("./src/utils/file");
const {
replaceTemplates,
replaceVariables,
replaceResources,
} = require("./src/utils/processing");
class HtmlRenderer {
html = "";
/**
* @param {Configuration} configuration
*/
constructor(configuration) {
this.config = configuration;
}
render(path, variables = {}) {
let content = readTemplate(`${this.config.templatesDirectory}/${path}`);
content = replaceTemplates(new HtmlRenderer(this.config), content, variables);
content = replaceVariables(content, variables);
content = replaceResources(this.config.resourcesUrl, content, variables);
this.html = content;
return this;
}
save(name) {
saveHTML(`${this.config.outputDirectory}/${name}`, this.html);
}
toString() {
return this.html;
}
static realPath(relativePath) {
return path.resolve(relativePath);
}
}
module.exports = HtmlRenderer;