我们在网络应用中使用液体。我注意到Shopify已经实现了一些有用的过滤器,这些过滤器默认不包含在液体宝石中。例如url_param_escape
为了测试它我做了这个:
$ IRB
要求'液体' Liquid :: Template.parse(' {{"&" | url_param_escape}}')。呈现 => " &安培; "
显然,默认情况下不包含这些过滤器。他们可以从某个地方获得吗?如果是这样,我在哪里以及如何将它们添加到解析器?否则是一个接一个地实现它们的情况,还是它们都来自同一个模块或什么东西?
答案 0 :(得分:1)
你可以/必须自己写。它们很容易创建。以下是url_param_escape过滤器的示例实现:
'use strict';
var hbs = require('handlebars');
var fs = require('fs');
var dir = __dirname + '/your_api_dir';
var files = fs.readdirSync(dir);
files.forEach((fileName) => {
var raw = fs.readFileSync(dir + '/' + fileName, 'utf8');
hbs.registerPartial(file, raw);
});
var index = fs.readFileSync(dir + '/index.yaml');
var out = hbs.compile(index.toString());
然后你需要注册这个过滤器,以便Liquid知道使用它。我通常在config.after_initialize中的application.rb中执行此操作,但如果你有很多这样的话,它可能会有更好的地方。这是一个例子:
module MyApp
module Liquid
module Filters
module UrlParamFilter
def url_param_escape(thing_to_escape)
CGI.escape(thing_to_escape)
end
end
end
end
end