From 447c88febe48ac82af4c5d0c4ccc8a115408d089 Mon Sep 17 00:00:00 2001 From: jolheiser Date: Sat, 25 Dec 2021 23:13:57 -0600 Subject: [PATCH] Add directions and fix emdbed Signed-off-by: jolheiser --- README.md | 14 ++++++++++++++ _example/{test.md => test/index.md} | 0 _example/{ => test}/test.go | 0 _example/{ => test}/test.sql | 0 markdown/markdown.go | 13 +++---------- readme.go | 20 ++++++++++++++++++++ router/router.go | 20 +++++++++++++++++++- 7 files changed, 56 insertions(+), 11 deletions(-) rename _example/{test.md => test/index.md} (100%) rename _example/{ => test}/test.go (100%) rename _example/{ => test}/test.sql (100%) create mode 100644 readme.go diff --git a/README.md b/README.md index 023f1d7..22c31b1 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,20 @@ A simple blog tool. +Supports [emdbed](https://git.jojodev.com/jolheiser/emdbed). + +Point `blog` at a directory with blog post markdown files. Each markdown file (or directory with an `index.md` inside) will be converted to a blog post. + +Each post must contain some TOML metadata as follows: + + +```toml +title = "Test" +date = 2021-10-01 +tags = ["test", "example"] +``` + + ## License [MIT](LICENSE) \ No newline at end of file diff --git a/_example/test.md b/_example/test/index.md similarity index 100% rename from _example/test.md rename to _example/test/index.md diff --git a/_example/test.go b/_example/test/test.go similarity index 100% rename from _example/test.go rename to _example/test/test.go diff --git a/_example/test.sql b/_example/test/test.sql similarity index 100% rename from _example/test.sql rename to _example/test/test.sql diff --git a/markdown/markdown.go b/markdown/markdown.go index fbd7b99..dec1712 100644 --- a/markdown/markdown.go +++ b/markdown/markdown.go @@ -3,9 +3,6 @@ package markdown import ( "bytes" "io" - "strings" - - "go.jolheiser.com/emdbed" chromahtml "github.com/alecthomas/chroma/formatters/html" "github.com/yuin/goldmark" @@ -38,17 +35,13 @@ var gm = goldmark.New( ) // Convert transforms a markdown document into HTML -func Convert(baseDir string, r io.Reader) (string, error) { - content, err := Content(r) - if err != nil { - return "", err - } - content, err = emdbed.Convert(baseDir, strings.NewReader(content)) +func Convert(r io.Reader) (string, error) { + content, err := io.ReadAll(r) if err != nil { return "", err } var buf bytes.Buffer - if err := gm.Convert([]byte(content), &buf); err != nil { + if err := gm.Convert(content, &buf); err != nil { return "", err } return buf.String(), nil diff --git a/readme.go b/readme.go new file mode 100644 index 0000000..0f5a333 --- /dev/null +++ b/readme.go @@ -0,0 +1,20 @@ +//go:build generate + +package main + +import ( + "os" + + "go.jolheiser.com/emdbed" +) + +//go:generate go run readme.go +func main() { + convert, err := emdbed.ConvertFile("README.md") + if err != nil { + panic(err) + } + if err := os.WriteFile("README.md", []byte(convert), os.ModePerm); err != nil { + panic(err) + } +} diff --git a/router/router.go b/router/router.go index a7facc0..96dce5d 100644 --- a/router/router.go +++ b/router/router.go @@ -4,6 +4,10 @@ import ( "html/template" "net/http" "os" + "path/filepath" + "strings" + + "go.jolheiser.com/emdbed" "go.jolheiser.com/blog/markdown" "go.jolheiser.com/blog/post" @@ -53,7 +57,21 @@ func fileHandler(blog *post.Blog) http.HandlerFunc { } defer fi.Close() - md, err := markdown.Convert(blog.Path, fi) + mdContent, err := markdown.Content(fi) + if err != nil { + log.Error().Err(err).Msg("could not get content") + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + emdbedContent, err := emdbed.Convert(filepath.Dir(p.Path), strings.NewReader(mdContent)) + if err != nil { + log.Error().Err(err).Msg("could not emdbed") + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + md, err := markdown.Convert(strings.NewReader(emdbedContent)) if err != nil { log.Error().Err(err).Msg("could not convert") http.Error(w, err.Error(), http.StatusInternalServerError)