Fixes #3
This commit is contained in:
32
_src/eleventy-liquidjs-tag-highlight-plain.js
Normal file
32
_src/eleventy-liquidjs-tag-highlight-plain.js
Normal file
@ -0,0 +1,32 @@
|
||||
module.exports = function(liquidEngine) {
|
||||
|
||||
return {
|
||||
parse: function(tagToken, remainTokens) {
|
||||
this.language = tagToken.args;
|
||||
this.tokens = [];
|
||||
|
||||
var stream = liquidEngine.parser.parseStream(remainTokens);
|
||||
|
||||
stream
|
||||
.on('token', token => {
|
||||
if (token.name === 'endhighlight') {
|
||||
stream.stop();
|
||||
} else {
|
||||
this.tokens.push(token);
|
||||
}
|
||||
})
|
||||
.on('end', x => {
|
||||
throw new Error("tag highlight not closed");
|
||||
});
|
||||
|
||||
stream.start();
|
||||
},
|
||||
render: function(scope, hash) {
|
||||
var tokens = this.tokens.map(token => {
|
||||
return token.raw.trim();
|
||||
}).join('').trim();
|
||||
|
||||
return Promise.resolve(`<pre class="language-${this.language}"><code class="language-${this.language}">\n` + tokens + "\n</code></pre>");
|
||||
}
|
||||
}
|
||||
};
|
37
_src/eleventy-liquidjs-tag-highlight-prismjs.js
Normal file
37
_src/eleventy-liquidjs-tag-highlight-prismjs.js
Normal file
@ -0,0 +1,37 @@
|
||||
const Prism = require('prismjs');
|
||||
|
||||
module.exports = function(liquidEngine) {
|
||||
let langMap = {
|
||||
"css": "css",
|
||||
"html": "markup",
|
||||
"js": "javascript"
|
||||
};
|
||||
|
||||
return {
|
||||
parse: function(tagToken, remainTokens) {
|
||||
this.language = langMap[ tagToken.args ] || tagToken.args;
|
||||
this.tokens = [];
|
||||
|
||||
var stream = liquidEngine.parser.parseStream(remainTokens);
|
||||
|
||||
stream
|
||||
.on('token', token => {
|
||||
if (token.name === 'endhighlight') {
|
||||
stream.stop();
|
||||
} else {
|
||||
this.tokens.push(token);
|
||||
}
|
||||
})
|
||||
.on('end', x => {
|
||||
throw new Error("tag highlight not closed");
|
||||
});
|
||||
|
||||
stream.start()
|
||||
},
|
||||
render: function(scope, hash) {
|
||||
var tokens = this.tokens.map(token => token.raw).join('').trim();
|
||||
var html = Prism.highlight(tokens, Prism.languages[ this.language ]);
|
||||
return Promise.resolve(`<pre class="language-${this.language}"><code class="language-${this.language}">` + html + "</code></pre>");
|
||||
}
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user