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 }