diff --git a/src/server/server.go b/src/server/server.go index e9b0c04..58988fb 100644 --- a/src/server/server.go +++ b/src/server/server.go @@ -28,6 +28,42 @@ type reqData struct { params map[string]string } +func joinBase(base, name string) string { + if base == "" { + return "/" + name + } + return base + "/" + name +} + +func basePath(base string) string { + if base == "" || base == "." { + return "/" + } + return base +} + +func fixMalformedToml(content string) string { + re := regexp.MustCompile(`(?m)^(\s*\w+\s*=\s*)$`) + return re.ReplaceAllStringFunc(content, func(match string) string { + parts := strings.Split(strings.TrimSpace(match), "=") + if len(parts) == 2 && strings.TrimSpace(parts[1]) == "" { + key := strings.TrimSpace(parts[0]) + return key + " = \"\"" + } + return match + }) +} + +func markdownToHTML(mdText string) string { + extensions := parser.CommonExtensions | parser.AutoHeadingIDs | parser.NoEmptyLineBeforeBlock + p := parser.NewWithExtensions(extensions) + doc := p.Parse([]byte(mdText)) + htmlFlags := html.CommonFlags | html.HrefTargetBlank + opts := html.RendererOptions{Flags: htmlFlags} + renderer := html.NewRenderer(opts) + return string(markdown.Render(doc, renderer)) +} + func handleDir(entries []os.DirEntry, dir string, routes map[string]string, base string, isStatic bool) error { for _, entry := range entries { path := filepath.Join(dir, entry.Name()) @@ -65,42 +101,6 @@ func handleDir(entries []os.DirEntry, dir string, routes map[string]string, base return nil } -func joinBase(base, name string) string { - if base == "" { - return "/" + name - } - return base + "/" + name -} - -func basePath(base string) string { - if base == "" || base == "." { - return "/" - } - return base -} - -func fixMalformedToml(content string) string { - re := regexp.MustCompile(`(?m)^(\s*\w+\s*=\s*)$`) - return re.ReplaceAllStringFunc(content, func(match string) string { - parts := strings.Split(strings.TrimSpace(match), "=") - if len(parts) == 2 && strings.TrimSpace(parts[1]) == "" { - key := strings.TrimSpace(parts[0]) - return key + " = \"\"" - } - return match - }) -} - -func markdownToHTML(mdText string) string { - extensions := parser.CommonExtensions | parser.AutoHeadingIDs | parser.NoEmptyLineBeforeBlock - p := parser.NewWithExtensions(extensions) - doc := p.Parse([]byte(mdText)) - htmlFlags := html.CommonFlags | html.HrefTargetBlank - opts := html.RendererOptions{Flags: htmlFlags} - renderer := html.NewRenderer(opts) - return string(markdown.Render(doc, renderer)) -} - func loadIncludeModules(L *lua.LState, includeDir string) *lua.LTable { app := L.NewTable() ents, err := os.ReadDir(includeDir)