access scope in liquidjs filter
HTML
<script src="https://cdn.jsdelivr.net/npm/liquidjs/dist/liquid.browser.min.js"></script>
<div id="log"></div>
JavaScript
const { Liquid, toPromise } = liquidjs
const engine = new Liquid()
engine.registerTag('upper', {
parse: function(tagToken, remainTokens) {
this.str = tagToken.args; // name
},
* render(ctx) {
var str = yield this.liquid._evalValue(this.str, ctx);
return str.toUpperCase() // 'ALICE'
}
});
const tpl = `{% upper name %}`
const scope = { name: "alice" }
engine.parseAndRender(tpl, scope).then(html => log(html))
function log(text) {
document.querySelector("#log").innerText += text + '\n';
}