github.com/kyleu/dbaudit@v0.0.2-0.20240321155047-ff2f2c940496/app/controller/clib/docs.go (about) 1 // Package clib - Content managed by Project Forge, see [projectforge.md] for details. 2 package clib 3 4 import ( 5 "net/http" 6 7 "github.com/pkg/errors" 8 9 "github.com/kyleu/dbaudit/app" 10 "github.com/kyleu/dbaudit/app/controller" 11 "github.com/kyleu/dbaudit/app/controller/cutil" 12 "github.com/kyleu/dbaudit/app/util" 13 "github.com/kyleu/dbaudit/doc" 14 "github.com/kyleu/dbaudit/views/vdoc" 15 ) 16 17 func Docs(w http.ResponseWriter, r *http.Request) { 18 controller.Act("docs", w, r, func(as *app.State, ps *cutil.PageState) (string, error) { 19 pth, _ := cutil.RCRequiredString(r, "path", false) 20 if pth == "" { 21 return "", errors.New("invalid path") 22 } 23 24 bc := []string{"docs"} 25 bc = append(bc, util.StringSplitAndTrim(pth, "/")...) 26 27 title, x, err := doc.HTML("doc:"+pth, pth+util.ExtMarkdown, func(s string) (string, string, error) { 28 return cutil.FormatMarkdownClean(s, "file") 29 }) 30 if err != nil { 31 return "", errors.Wrapf(err, "unable to load documentation from [%s]", pth) 32 } 33 c, _ := doc.Content(pth + util.ExtMarkdown) 34 ps.SetTitleAndData(title, c) 35 return controller.Render(w, r, as, &vdoc.MarkdownPage{Title: pth, HTML: x}, ps, bc...) 36 }) 37 }