alpha p9
This commit is contained in:
@@ -22,11 +22,13 @@ import (
|
||||
"fes/src/config"
|
||||
)
|
||||
|
||||
/* structure of all data passed to page via fes.bus */
|
||||
type reqData struct {
|
||||
path string
|
||||
params map[string]string
|
||||
}
|
||||
|
||||
/* loads directories to routes */
|
||||
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())
|
||||
@@ -70,6 +72,7 @@ func basePath(base string) string {
|
||||
return base
|
||||
}
|
||||
|
||||
/* fixes empty TOML keys (e.g., key=) */
|
||||
func fixMalformedToml(content string) string {
|
||||
re := regexp.MustCompile(`(?m)^(\s*\w+\s*=\s*)$`)
|
||||
return re.ReplaceAllStringFunc(content, func(match string) string {
|
||||
@@ -82,6 +85,7 @@ func fixMalformedToml(content string) string {
|
||||
})
|
||||
}
|
||||
|
||||
/* converts markdown to html */
|
||||
func markdownToHTML(mdText string) string {
|
||||
extensions := parser.CommonExtensions | parser.AutoHeadingIDs | parser.NoEmptyLineBeforeBlock
|
||||
p := parser.NewWithExtensions(extensions)
|
||||
@@ -92,6 +96,7 @@ func markdownToHTML(mdText string) string {
|
||||
return string(markdown.Render(doc, renderer))
|
||||
}
|
||||
|
||||
/* load Lua include modules used in core/ into their table */
|
||||
func loadIncludeModules(L *lua.LState, includeDir string) *lua.LTable {
|
||||
app := L.NewTable()
|
||||
ents, err := os.ReadDir(includeDir)
|
||||
@@ -121,6 +126,7 @@ func loadIncludeModules(L *lua.LState, includeDir string) *lua.LTable {
|
||||
return app
|
||||
}
|
||||
|
||||
/* load and execute lua scripts with core and user modules */
|
||||
func loadLua(luaDir string, entry string, cfg *config.MyConfig, requestData reqData) (string, error) {
|
||||
L := lua.NewState()
|
||||
defer L.Close()
|
||||
@@ -247,6 +253,7 @@ func loadLua(luaDir string, entry string, cfg *config.MyConfig, requestData reqD
|
||||
return "", nil
|
||||
}
|
||||
|
||||
/* generate html index page for archive directories */
|
||||
func generateArchiveIndex(fsPath string, urlPath string) (string, error) {
|
||||
info, err := os.Stat(fsPath)
|
||||
if err != nil {
|
||||
@@ -296,10 +303,7 @@ func generateArchiveIndex(fsPath string, urlPath string) (string, error) {
|
||||
return strings.ToLower(list[i].name) < strings.ToLower(list[j].name)
|
||||
})
|
||||
|
||||
urlPath = strings.TrimPrefix(urlPath, "/archive")
|
||||
if urlPath == "" {
|
||||
urlPath = "/"
|
||||
}
|
||||
urlPath = basePath(strings.TrimPrefix(urlPath, "/archive"))
|
||||
|
||||
var b strings.Builder
|
||||
b.WriteString("<html>\n<head><title>Index of ")
|
||||
@@ -340,6 +344,7 @@ func generateArchiveIndex(fsPath string, urlPath string) (string, error) {
|
||||
return b.String(), nil
|
||||
}
|
||||
|
||||
/* start http server with features */
|
||||
func Start(dir string) error {
|
||||
if err := os.Chdir(dir); err != nil {
|
||||
return fmt.Errorf("failed to change directory to %s: %w", dir, err)
|
||||
|
||||
Reference in New Issue
Block a user