diff --git a/example/aiur.config.js b/example/aiur.config.js
index be42474..4794140 100644
--- a/example/aiur.config.js
+++ b/example/aiur.config.js
@@ -20,6 +20,15 @@ exports.vendor = {
scripts: []
};
+exports.renderers = {
+ lymetheaf: [
+ require("lymetheaf"),
+ {
+ prefix: __dirname
+ }
+ ]
+}
+
exports.pages = {
"": {
file: "./components/welcome.md",
diff --git a/example/components/thing/ding.html b/example/components/thing/ding.html
new file mode 100644
index 0000000..8ab1c34
--- /dev/null
+++ b/example/components/thing/ding.html
@@ -0,0 +1,3 @@
+
Lymetheaf OFF
+no message
+
diff --git a/example/components/thing/thing.md b/example/components/thing/thing.md
index bd34509..4f2a079 100644
--- a/example/components/thing/thing.md
+++ b/example/components/thing/thing.md
@@ -25,3 +25,9 @@ This uses data
```thymeleaf
No message.
```
+
+Use the JAVA implementation "Lymetheaf"
+
+```lymetheaf
+components/thing/ding.html
+```
diff --git a/example/package.json b/example/package.json
index c081e96..3eaa0a2 100644
--- a/example/package.json
+++ b/example/package.json
@@ -1,6 +1,6 @@
{
"scripts": {
- "start": "aiur --watch --liveserve",
+ "start": "aiur --watch --liveserve 3000",
"compile": "aiur --fingerprint --compact"
},
"dependencies": {
diff --git a/lib/highlight_snippet.js b/lib/highlight_snippet.js
index 5d85073..bbb3a65 100644
--- a/lib/highlight_snippet.js
+++ b/lib/highlight_snippet.js
@@ -4,6 +4,7 @@ let loadLanguages = require("prismjs/components/");
module.exports = function(snippet, language) {
// (temporary) patches for missing languages
Prism.languages.thymeleaf = Prism.languages.html;
+ Prism.languages.lymetheaf = Prism.languages.html;
if(!Prism.languages[language]) {
loadLanguages([language]);
diff --git a/lib/page_renderer.js b/lib/page_renderer.js
index 31c62b4..537cca3 100644
--- a/lib/page_renderer.js
+++ b/lib/page_renderer.js
@@ -2,10 +2,11 @@ let { Parser } = require("commonmark");
let HtmlRenderer = require("./html_renderer");
module.exports = class PageRenderer {
- constructor({ renderers, layout }) {
+ constructor({ renderers, renderersConfigs, layout }) {
this.reader = new Parser();
this.writer = new HtmlRenderer();
this.renderers = renderers;
+ this.renderersConfigs = renderersConfigs;
this.layout = layout;
this.snippets = [];
}
@@ -25,10 +26,11 @@ module.exports = class PageRenderer {
async renderSnippet({ page, slug, language, snippet }) {
let renderer = this.renderers[language];
+ let rendererConfig = this.renderersConfigs[language];
if(!renderer) {
throw new Error(`Styleguide ran across unknown language ${language} (renderer)`);
}
- let html = await renderer(snippet, page.data);
+ let html = await renderer(snippet, page.data, rendererConfig);
return { html, page, slug };
}
diff --git a/lib/site.js b/lib/site.js
index 6346435..4cbef28 100644
--- a/lib/site.js
+++ b/lib/site.js
@@ -31,10 +31,24 @@ module.exports = class Site {
baseURI: baseURI,
// TODO: either make this configurable or autoload renderers on use
renderers: DEFAULTS.renderers,
+ renderersConfigs: {},
// TODO: make this configurable, but first find a simpler contract
generateLayout: DEFAULTS.generateLayout,
assetManager
});
+
+ let moreRenderers = require(this.source).renderers || {};
+ Object.keys(moreRenderers).forEach(rendererName => {
+ let thatNewRenderer = moreRenderers[rendererName]
+ if (Array.isArray(thatNewRenderer)) {
+ let [renderer, rendererConfig] = thatNewRenderer;
+ this.renderers[rendererName] = renderer;
+ this.renderersConfigs[rendererName] = rendererConfig
+ } else {
+ this.renderers[rendererName] = thatNewRenderer;
+ }
+ });
+
this.dirs = new Set();
}
@@ -51,7 +65,7 @@ module.exports = class Site {
await mkdirp(this.target);
}
- let { renderers, generateLayout } = this;
+ let { renderers, renderersConfigs, generateLayout } = this;
let preperations = tree.map(async page => {
let filepath = path.resolve(this.target, page.slug);
@@ -70,7 +84,7 @@ module.exports = class Site {
let navigation = new Navigation({ baseURI: this.baseURI });
let layout = await generateLayout(navigation.generate(tree), this.assetManager.manifest);
- let pageRenderer = new PageRenderer({ renderers, layout });
+ let pageRenderer = new PageRenderer({ renderers, renderersConfigs, layout });
let writes = tree.map(async page => {
let html = await pageRenderer.render(page);
diff --git a/package.json b/package.json
index 859ae01..1e48fb3 100644
--- a/package.json
+++ b/package.json
@@ -18,28 +18,29 @@
"node": ">=8"
},
"dependencies": {
- "commonmark": "^0.29.0",
+ "commonmark": "^0.29.1",
"complate-stream": "^0.16.9",
"donny": "^0.1.0",
- "faucet-pipeline-core": "^1.3.1",
- "faucet-pipeline-js": "^2.0.8",
- "faucet-pipeline-jsx": "^2.0.8",
- "faucet-pipeline-sass": "^1.3.0",
+ "faucet-pipeline-core": "^1.3.2",
+ "faucet-pipeline-js": "^2.0.10",
+ "faucet-pipeline-jsx": "^2.0.10",
+ "faucet-pipeline-sass": "^1.3.1",
"faucet-pipeline-static": "^1.1.0",
- "handlebars": "^4.4.3",
+ "handlebars": "^4.7.3",
"live-server": "^1.2.1",
- "metacolon": "^1.0.0",
+ "metacolon": "^1.1.0",
"minimist": "^1.2.0",
"mkdirp": "^0.5.1",
- "parse5": "^5.1.0",
- "prismjs": "^1.17.1",
+ "parse5": "^5.1.1",
+ "prismjs": "^1.19.0",
"require-from-string": "^2.0.2",
- "thymeleaf": "^0.18.0"
+ "thymeleaf": "^0.18.1",
+ "lymetheaf": "git+https://github.com/blynx/aiur-processor-lymetheaf.git"
},
"devDependencies": {
"eslint-config-fnd": "^1.8.0",
"mocha": "^6.2.2",
"release-util-fnd": "^1.1.1",
- "rimraf": "^3.0.0"
+ "rimraf": "^3.0.2"
}
}