GoのMustacheエンジンにマージされたプルリクエストの話

Takashi Iwamoto
VELTRA Engineering
Published in
3 min readMay 18, 2020

放置された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ではないでしょうか。

すぐにプルリクエストを送ったものの、メンテナが忙しそうなので、反応は期待しませんでした。そして送ったのを忘れた頃、マージ完了の通知が来た次第です。送ってみるものですね 🧔

--

--

Takashi Iwamoto
VELTRA Engineering

ENECHANGE株式会社VPoT兼CTO室マネージャー。AWS Community Builder (Cloud Operations)。前職はAWS Japan技術サポート。社内外を問わず開発者体験の向上に取り組んでいます。