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))
これで出来た。