GoのMustacheエンジンにマージされたプルリクエストの話
放置されたissueは、伸びきったひげのようだ
マスク生活のおかげで、ひげを伸ばしたい放題のイワモトです。先日、GoのMustacheテンプレートエンジンにプルリクエストを送ったところ、マージされました。その話を書きます。小ネタです。
Mustacheとは?
Mustacheはプログラミング言語や用途に依存しない汎用的なテンプレート仕様です。40以上のプログラミング言語で処理系が実装されています。
構文に {{var}}
のように波括弧が頻出し、{
が横向きの口ひげに見えることから、口ひげを表すMustacheと名づけられました。
どんなプルリクエスト?
ぼくが送ったプルリクエストはこちらです。写真はメンテナの方で、ぼくではありません。
こんなテンプレートに対して:
You have {{count}} items:
{{#sections}}
--{{name}}--
{{#items}}
{{.}}
{{/items}}
{{/sections}}
下記のコードを実行した場合:
mustache.AllowMissingVariables = false
s, err := mustache.Render(tmpl, map[string]interface{}{
"count": 2,
"sections": map[string]interface{}{
//"name": "Stuff",
"items": []string{"foo", "bar"},
},
})
fmt.Println(s, err)
sections.name
が存在しないのだからエラーを返してほしい、というissueが立ったのが2016年10月のこと。
メンテナから「I agree this is a valid issue.」「PRs are welcome 😄」と返信があったものの、ずっと放置されていました。
2020年4月、GoのMustacheについて調べていたぼくは、たまたまこのissueを見つけました。むむ、これは対応できそうな気がするぞ。
さっそく手もとで試したところ、エラーハンドリングの追加と、テストコードの移動だけでエラーを返せることがわかりました。なかなかエレガントなdiffではないでしょうか。
すぐにプルリクエストを送ったものの、メンテナが忙しそうなので、反応は期待しませんでした。そして送ったのを忘れた頃、マージ完了の通知が来た次第です。送ってみるものですね 🧔