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  }