Tambourine作業メモ

主にスキル習得のためにやった作業のメモ。他人には基本的に無用のものです。

GoでMarkdownをHTMLにする

OCamlに浮気していたけど、golang版の議事録作成ツールの最後のピースとして、Makdownの変換部分について調べてみる。

Markdownの変換は標準ライブラリでは出来ない。外からライブラリを持ってくるときにはGOPATHが大事になるらしいが、 それも過去のことらしい。良くわからない。

最新のやり方に従うため、Software-Design 2019/05の特集記事を参考に、go mod initする。

> go mod init fmt_session_memo
go: creating new go.mod: module fmt_session_memo

fmt_session_memo というのはこれから作ろうとしているコマンドの名前である。

これをすると、go.modというファイルが作られる。

> cat go.mod
module fmt_session_memo

go 1.12

Markdownのライブラリはblackfridayというのを使うことにする。go getすればいいらしい。 Markdown記法で書かれたものをHTMLに変換するGo言語コード を参考にした。

> go get github.com/russross/blackfriday
go: finding github.com/russross/blackfriday v2.0.0+incompatible
go: downloading github.com/russross/blackfriday v2.0.0+incompatible
go: extracting github.com/russross/blackfriday v2.0.0+incompatible
go: finding github.com/shurcooL/sanitized_anchor_name v1.0.0
go: downloading github.com/shurcooL/sanitized_anchor_name v1.0.0
go: extracting github.com/shurcooL/sanitized_anchor_name v1.0.0

go.modが修正された。

> cat go.mod
module fmt_session_memo

go 1.12

require (
    github.com/russross/blackfriday v2.0.0+incompatible // indirect
    github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect
)

go.sumってのも出来た。

> cat go.sum
github.com/russross/blackfriday v2.0.0+incompatible h1:cBXrhZNUf9C+La9/YpS+UHpUT8YD6Td9ZMSU9APFcsk=
github.com/russross/blackfriday v2.0.0+incompatible/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=

チェックサムが入ってる

後はblackfriday.MarkdownBasic()を使えばいいらしい・・・と思ったら、そんな関数ないと言われる。 GitHubを観に行くと、V2はRunを使えと書いてある。

str := string(blackfriday.Run(md))

これで出来た。