Handlebarsで@index_1というヘルパー関数を作る

npmに登録されているHandlebarsで

var array = [  
    'hoge',
    'fuga',
    'foo',
    'bar'
];

{{each array}}
    {{@index}}: {{this}}
{{/each}}

みたいなことをしようとすると

0: hoge  
1: fuga  
2: foo  
3: bar  

みたいになる。

正直0から始まってほしくない。
1から始めて下さいって感じです。

@index_1を作る

無いなら作ろうホトトギス。

node_modules/handlebars/lib/handlebars/base.jsってファイルをいじってく。

一括検索でdata.index = i;を探す。 きっと2箇所出てくるので、どちらも以下のように追記する。

data.index = i;  
data.index_1 = i+1; # この行を追加  

これでテンプレート側で{{@index_1}}というのが使えるようになる。

使ってみる

上に書いたやつで{{@index_1}}使ってみる。

{{each array}}
    {{@index_1}}: {{this}}
{{/each}}

おそらく以下のようになるはず。

1: hoge  
2: fuga  
3: foo  
4: bar  

テンプレートエンジンはHandlebarsが好きなのでどんどんいいかんじにしていきたい。