godoc の template に関するメモ
godoc で markdown を生成したいと思って、調べたときのメモ。
既に、それを実現しているコードはこちら。
これを参考に、自分独自のテンプレートを作ってみたくなったので、調査したメモ。
必要なファイル
godoc -templates=$DIR
の記載どおり、godoc のテンプレートはディレクトリをパス指定しないといけない。
なぜなら、必要なファイルが複数あるから。
ファイルを読み込んでる箇所は/x/tools/cmd/godoc/handlers.go。
また、これらファイルは/x/tools/godoc/staticにあった。
- package.txt (出力するテンプレート、これ作りたい)
- search.txt (検索用テンプレート?)
渡される構造体
package.txt
の書き方は text/template
に則ってる。 (雑に)調べたところ、PageInfo が渡されてるっぽい。
この中で、おもに doc.Package に関して出力していけば良いみたい。
呼ばれる関数
package.txt
にある example_text
などは、パーサー側で定義された関数だった。
定義はもちろんgodocにあった。
ここの注意として、例えば example_text
は Test Example を出力してくれる関数だけど、
「1行目にExample:」「行末に改行2個」と、余計な文字まで付加して出力してきた。
Example: // ここに Test Example が入る // 改行が入る // 〃
そのため、markdown の code block として出力したら、変な結果になってしまった。
コードを見た限り、これら余計な文字を消すオプションや関数は定義されてないため、 出力後に手動で削るか、出力方法を自分で再定義するしか無さそう。
godocを使わない方法
godoc から markdown を生成するモノはいくつかあるので、それを使った方が楽だった。
GitHub - robertkrimen/godocdown: Format package documentation (godoc) as GitHub friendly Markdown
GitHub - davecheney/godoc2md: Simple translation from godoc to markdown.
とりあえず、今回は自作を諦めて、godocdown を使うことにしました。