hugo-obsidian/main.go

60 lines
1.1 KiB
Go
Raw Normal View History

2021-07-17 06:26:40 +03:00
package main
import (
"fmt"
md "github.com/nikitavoloboev/markdown-parser"
"io/fs"
"io/ioutil"
"path/filepath"
2021-07-17 06:32:47 +03:00
"strings"
2021-07-17 06:26:40 +03:00
)
type Link struct {
Source string
Target string
Text string
}
2021-07-17 06:32:47 +03:00
func trim(source, prefix, suffix string) string {
return strings.TrimPrefix(strings.TrimSuffix(source, suffix), prefix)
}
// parse single file for links
func parse(dir, pathPrefix string) []Link {
2021-07-17 06:26:40 +03:00
// read file
bytes, err := ioutil.ReadFile(dir)
if err != nil {
panic(err)
}
// parse md
var links []Link
2021-07-17 06:32:47 +03:00
fmt.Printf("%s \n", trim(dir, pathPrefix, ".md"))
2021-07-17 06:26:40 +03:00
for text, target := range md.GetAllLinks(string(bytes)) {
2021-07-17 06:32:47 +03:00
fmt.Printf(" %s -> %s \n", text, target)
2021-07-17 06:26:40 +03:00
links = append(links, Link{
2021-07-17 06:32:47 +03:00
Source: trim(dir, pathPrefix, ".md"),
2021-07-17 06:26:40 +03:00
Target: target,
Text: text,
})
}
return links
}
2021-07-17 06:32:47 +03:00
// recursively walk directory and return all files with given extension
2021-07-17 06:26:40 +03:00
func find(root, ext string) {
filepath.WalkDir(root, func(s string, d fs.DirEntry, e error) error {
if e != nil {
return e
}
if filepath.Ext(d.Name()) == ext {
2021-07-17 06:32:47 +03:00
parse(s, root)
2021-07-17 06:26:40 +03:00
}
return nil
})
}
func main() {
find("../www/content", ".md")
}