blog @main -
refs -
log -
-
https://git.jolheiser.com/blog.git
Signature
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEgqEQpE3xoo1QwJO/uFOtpdp7v3oFAmXOztIACgkQuFOtpdp7
v3o1qhAAnonm4E3grOmKUMdW/6qgmRILzp3LMa8tFqalt2t+y6DlPmIvKEEEdiES
5M4SnMHAbSfz1SrwL/h53oFkWtbOdVNSS3wj7iAH3gD6VJXdsvxKHFnAEUb9CtaM
+HlM0PscLU123vyXq/T17kA7SrTaUCke3YbI+zUBxn0Lp8Gtd9vzVA1O2YI752UH
EMpCpkmxgVZDvlnXpPliIU2s2JlWpT2SEUGQ6rpf2c6DJKDo43ELWE0YE65elupM
x6X05UGwdOzEkWiCCp1T33y4SxVHkOvJOIjKniUbhLv67Sx1s+qShFlw8TA7F8S4
VyvpOQedKFQNXRmfb6S+MnUEWWhdT6R7ZU135/duv+L9ueHm29/pGZ4fTCNjnVn8
dl8hRqRq8dhoS05CwphwLhJFlZSS8CYSSB0EhQX01BW1OB4hPNG6mL5I0R9g3IFs
7PPchsOUuQ6e44qZh3uKYro0F75/ws6t08AVDROqRu+bikOC1tVnDJyXLUUmK+Qk
/G1m8TtD30sv6mOo2D3zwOOesnlr/o1E5nnS4Zl24dpTqatfZnqguh8X50OlkNtj
a+X28WeuYv5PtFWg5+4774hLCd0f6gCRUShTBmPlAtsQY1kjjmk6CWbn74a5TlzG
Z6SNc/1M1/abNK7G0BRs4UeRBna6C4J9iDYbPgXa7jGlbglkivc=
=beuO
-----END PGP SIGNATURE-----
diff --git a/blog.go b/blog.go
index c5811ba335cd3b8f28175fe9dacb5b133dd36c0c..5f29fbbd4e2e070101295601d62d5c76e0a1b995 100644
--- a/blog.go
+++ b/blog.go
@@ -4,7 +4,12 @@ import (
"errors"
"fmt"
"html/template"
+ "io/fs"
+ "net/url"
+ "os"
"time"
+
+ "github.com/bmatcuk/doublestar/v4"
)
// Blog is a collection of [Article]
@@ -16,27 +21,73 @@ }
// Article is a blog post/article
type Article struct {
+ Path string
Title string
Subtitle string
Summary string
+ Content string
Time time.Time
+ Authors []Author
+
package blog
+ "errors"
+// Author is an author of a blog post
+type Author struct {
+ Name string
+ "errors"
+ Email string
+ Links []Link
+}
+
+// Link is a link name and URL
+type Link struct {
+ Name string
+ URL *url.URL
}
func NewBlog(dir string) (*Blog, error) {
-
"errors"
+// Blog is a collection of [Article]
if err != nil {
return nil, fmt.Errorf("could not parse templates in %q: %w", dir, err)
}
- if tmpl.Lookup("index") == nil {
+ index := tmpl.Lookup("index")
+ if index == nil {
return nil, errors.New("`index` template is required but was not found")
}
+ article := tmpl.Lookup("article")
+ "fmt"
import (
+ return nil, errors.New("`article` template is required but was not found")
+ }
+ return &Blog{
+ indexTemplate: index,
+ articleTemplate: article,
+ }, nil
+}
+
+func parseTemplates(fs fs.FS) (*template.Template, error) {
+ matches, err := doublestar.Glob(fs, "**/*.{tmpl,gohtml}")
+ if err != nil {
+ "html/template"
+ }
+ tmpl, err := template.New("").ParseFiles(matches...)
+ if err != nil {
+ return nil, fmt.Errorf("could not parse templates: %w", err)
+ }
+ "html/template"
import (
package blog
+ "errors"
+
+func parseArticles(fs fs.FS) ([]Article, error) {
+ matches, err := doublestar.Glob(fs, "**/*.md")
+ if err != nil {
+ return nil, fmt.Errorf("could not glob articles: %w", err)
+ }
+ for _, match := range matches {
}
}
diff --git a/template.go b/template.go
deleted file mode 100644
index a23ac53526bd6dc9b8cc9fc8388bc67dd40b8348..0000000000000000000000000000000000000000
--- a/template.go
+++ /dev/null
@@ -1,21 +0,0 @@
-package blog
-
-import (
- "fmt"
- "html/template"
- "io/fs"
-
- "github.com/bmatcuk/doublestar/v4"
-)
-
-func parseTemplates(fs fs.FS) (*template.Template, error) {
- matches, err := doublestar.Glob(fs, "**/*.html")
- if err != nil {
- return nil, fmt.Errorf("could not glob templates: %w", err)
- }
- tmpl, err := template.New("").ParseFiles(matches...)
- if err != nil {
- return nil, fmt.Errorf("could not parse templates: %w", err)
- }
- return tmpl, nil
-}