Assemble で JSON とかを {{# each}} する時、規定数のタグ毎にタグで囲いたい時とか
15/10/22 npm module 化した npmjs/handlebars-helper-do-once-in-times
Assemble の official サイトの "Kiss my shiny metal ass!" とかのサンプル文言は好きだけど、なんとなく色々捜しにくいと思うのは私だけでしょうか。
ビルトインのヘルパーは見つける事ができなかったので、ググりまくったら stackoverflow で発見。そのままだとちょっと挙動がおかしかったので、修正したやつの備忘録。
例えば li タグ三つ毎に ul タグで囲いたいような場合
custom-helper.js
module.exports.register = function (Handlebars, options) {
Handlebars.registerHelper("xtimes", function(index_count, mod, block) {
if(parseInt(index_count) % (mod) === 0 && index_count !== 0){
return block.fn(this);
}
});
};
Gruntfile.js
assemble: {
site: {
options: {
helpers: [
'custom-helper.js'
}
}
}
},
hoge.hbs
<ul class="triplet">
{{# each list }}
{{#xtimes @index 3}}</ul><ul class="triplet">{{/xtimes}}
<li>{{name}}</li>
{{/ each}}
</ul>
result.html
<ul class="triplet">
<li>hoge</li><li>fuga</li><li>piyo</li>
</ul>
<ul class="triplet">
<li>とどめ</li><li>くらえ</li><li>エメラルドスプラーッシュ</li>
</ul>
<ul class="triplet">
<li>な</li><li>なにをするだーッ</li>
</ul>
{{# each}} とかのデータは関係なく、単純な repeat は helper が色々落ちてます
$ npm i handlebars-helper-repeat --save
Gruntfile.js
assemble: {
site: {
options: {
helpers: [
'handlebars-helper-repeat'
}
}
}
},