fes

Free Easy Site
Log | Files | Refs | README | LICENSE

util.go (1148B)


      1 package server
      2 
      3 import (
      4 	"github.com/gomarkdown/markdown"
      5 	"github.com/gomarkdown/markdown/html"
      6 	"github.com/gomarkdown/markdown/parser"
      7 	"regexp"
      8 	"strings"
      9 )
     10 
     11 func joinBase(base, name string) string {
     12 	if base == "" {
     13 		return "/" + name
     14 	}
     15 	return base + "/" + name
     16 }
     17 
     18 func basePath(base string) string {
     19 	if base == "" || base == "." {
     20 		return "/"
     21 	}
     22 	return base
     23 }
     24 
     25 func fixMalformedToml(content string) string {
     26 	re := regexp.MustCompile(`(?m)^(\s*\w+\s*=\s*)$`)
     27 	return re.ReplaceAllStringFunc(content, func(match string) string {
     28 		parts := strings.Split(strings.TrimSpace(match), "=")
     29 		if len(parts) == 2 && strings.TrimSpace(parts[1]) == "" {
     30 			key := strings.TrimSpace(parts[0])
     31 			return key + " = \"\""
     32 		}
     33 		return match
     34 	})
     35 }
     36 
     37 func markdownToHTML(mdText string) string {
     38 	extensions := parser.CommonExtensions | parser.AutoHeadingIDs | parser.NoEmptyLineBeforeBlock
     39 	p := parser.NewWithExtensions(extensions)
     40 	doc := p.Parse([]byte(mdText))
     41 	htmlFlags := html.CommonFlags | html.HrefTargetBlank
     42 	opts := html.RendererOptions{Flags: htmlFlags}
     43 	renderer := html.NewRenderer(opts)
     44 	return string(markdown.Render(doc, renderer))
     45 }