htmgo/htmgo-site/internal/dirwalk/walk.go
2024-09-20 13:25:14 -05:00

37 lines
816 B
Go

package dirwalk
import (
"github.com/maddalax/htmgo/framework/h"
"io/fs"
"os"
"strings"
)
type Page struct {
RoutePath string
FilePath string
Parts []string
}
func WalkPages(dir string, system fs.FS) []Page {
pages := make([]Page, 0)
fs.WalkDir(system, dir, func(path string, d fs.DirEntry, err error) error {
if err != nil {
return err
}
name := d.Name()
if !d.IsDir() && (strings.HasSuffix(name, ".md") || strings.HasSuffix(name, ".go")) {
fullPath := strings.Replace(path, dir, "", 1)
fullPath = strings.TrimSuffix(fullPath, ".md")
pages = append(pages, Page{
RoutePath: fullPath,
FilePath: path,
Parts: h.Filter(strings.Split(fullPath, string(os.PathSeparator)), func(item string) bool {
return item != ""
}),
})
}
return nil
})
return pages
}