40 lines
576 B
Go
40 lines
576 B
Go
package cat
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
func (c Cater) ToMarkdown() string {
|
|
var sb strings.Builder
|
|
|
|
write := func(e entry, lvl int) {
|
|
for range lvl {
|
|
sb.WriteString("#")
|
|
}
|
|
sb.WriteString(fmt.Sprintf(" %s (`%s`)\n", e.name, e.fqname))
|
|
|
|
if len(e.content) > 0 {
|
|
prts := strings.Split(e.name, ".")
|
|
sb.WriteString(
|
|
fmt.Sprintf(
|
|
"```%s\n%s\n```\n\n",
|
|
|
|
prts[len(prts)-1],
|
|
strings.ReplaceAll(
|
|
e.content,
|
|
"```",
|
|
"\\`\\`\\`",
|
|
),
|
|
),
|
|
)
|
|
}
|
|
}
|
|
|
|
for _, e := range c {
|
|
e.traverse(1, write)
|
|
}
|
|
|
|
return sb.String()
|
|
}
|