概要

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関連ライブラリについて