Walk的な操作が可能なAsciiDoc用パースライブラリは存在しますか?
概要
Go言語において、AsciiDoc形式のファイルをパースし、 path/filepath.Walk
のように各要素についてアクセスできるライブラリを探しています。
filepath - The Go Programming Language
Markdownでは gopkg.in/russross/blackfriday.v2
というライブラリが Walk
をサポートしており、以下はそれを使い各要素をたどる例です。
russross/blackfriday: Blackfriday: a markdown processor for Go
AsciiDocにおいて、同様の操作が可能なライブラリを探しています。
package main
import (
"fmt"
"io/ioutil"
"log"
"gopkg.in/russross/blackfriday.v2"
)
func markdownWalk(path string) {
file, err := ioutil.ReadFile(path)
if err != nil {
log.Fatal(err)
}
md := blackfriday.New()
root := md.Parse(file)
root.Walk(func(node *blackfriday.Node, entering bool) blackfriday.WalkStatus {
fmt.Println(node.Type, node.String())
return blackfriday.GoToNext
})
// fmt.Printf("%+v\n", string(blackfriday.Run(file)))
}
func main() {
mdPath := "example.md"
markdownWalk(mdPath)
}
既存のAsciiDoc関連ライブラリについて
- bytesparadise/libasciidoc: A Golang library for processing Asciidoc files.
- HTMLへの変換を意図したライブラリ。
libasciidoc/pkg/parser
やlibasciidoc/pkg/types
がドキュメントを含め整備されているため、求めている機能を持つ他のライブラリが存在しない場合これを用いて実装しようとしています。
- VonC/asciidocgo: Like asciidoctor, but in Go.
- ドキュメントが不足しており、使えるのか不明