pagr

A 'static site generator', built using dati.
Log | Files | Refs | Atom

commit 4950e814fbd8d914ad707774920d218ab802e4da
parent 9fff9062f66a2403d343f67adced6dc7a8622679
Author: gearsix <gearsix@tuta.io>
Date:   Wed, 30 Jun 2021 13:25:50 +0100

tidyup, mostly in content_test

Diffstat:
Mcontent.go | 6+++---
Mcontent_test.go | 60+++++++++++++++++++++++++-----------------------------------
Mtemplate.go | 1+
3 files changed, 29 insertions(+), 38 deletions(-)

diff --git a/content.go b/content.go @@ -15,7 +15,7 @@ import ( "strings" ) -var ContentContentsExts = [5]string{ +var SupportedContent = [5]string{ ".txt", // plain-text ".html", // HTML ".md", // commonmark with non-intrusive extensions: linkify, auto heading id, unsafe HTML @@ -93,7 +93,7 @@ func LoadContentDir(dir string) (c Content, e error) { } func isContentContentsExt(ext string) int { - for i, supported := range ContentContentsExts { + for i, supported := range SupportedContent { if ext == supported { return i } @@ -140,7 +140,7 @@ func (p *Page) NewContentsFromFile(fpath string) (err error) { } var body string - for _, lang := range ContentContentsExts { + for _, lang := range SupportedContent { if filepath.Ext(fpath) == lang { switch lang { case ".txt": diff --git a/content_test.go b/content_test.go @@ -7,10 +7,12 @@ import ( ) func TestLoadContentDir(t *testing.T) { + t.Parallel() + var err error tdir := t.TempDir() if err = createProjectContents(tdir); err != nil { - t.Errorf("failed to create project: %s", err) + t.Errorf("failed to create test content: %s", err) } var c Content @@ -18,10 +20,15 @@ func TestLoadContentDir(t *testing.T) { t.Fatalf("LoadContentDir failed: %s", err) } - if len(c) != len(contentContents)-1 { + validateContents(t, c, err) +} + +func validateContents(t *testing.T, c Content, e error) { + if len(c) != len(contents)-1 { t.Fatalf("invalid number of pages returned (%d should be %d)", - len(c), len(contentContents)) + len(c), len(contents)) } + for _, p := range c { if len(p.Path) == 0 { t.Fatalf("empty Path for page:\n%s\n", p) @@ -38,7 +45,7 @@ func TestLoadContentDir(t *testing.T) { } } -var contentContents = map[string]string{ +var contents = map[string]string{ ".txt": `p1 p2 @@ -79,7 +86,7 @@ p2 p3`, } -var contentAsset = []byte{ // 5x5 black png +var asset = []byte{ // 5x5 black png 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x01, 0x03, 0x00, 0x00, 0x00, 0xb7, 0xa1, 0xb4, 0xa6, @@ -95,44 +102,27 @@ var contentAsset = []byte{ // 5x5 black png } func createProjectContents(dir string) (err error) { - if _, err := os.Stat(dir); err != nil { - if err = os.Mkdir(dir, 0755); err != nil { - return err + writef := func(path, data string) { + if err == nil { + err = os.WriteFile(path, []byte(data), 0644) } } - var f *os.File - var path string - for l, lang := range ContentContentsExts { + var path, data string + for l, lang := range SupportedContent { if l == 0 { - path = dir - if f, err = os.Create(fmt.Sprintf("%s/.defaults.json", path)); err != nil { - return - } - f.WriteString("{ \"test\": \"data\" }") - f.Close() - if f, err = os.Create(fmt.Sprintf("%s/.page.toml", path)); err != nil { - return - } - f.WriteString("test = \"data\"") - f.Close() + writef(fmt.Sprintf("%s/.defaults.json", dir), "{ \"test\": \"data\" }") + writef(fmt.Sprintf("%s/.page.toml", dir), "test = \"data\"") } else if l > 1 { - path, err = os.MkdirTemp(path, "page") + dir, err = os.MkdirTemp(dir, "page") } - f, err = os.Create(fmt.Sprintf("%s/body%d%s", path, l, lang)) - if err != nil { - return - } - f.WriteString(contentContents[lang]) - f.Close() - if f, err = os.Create(fmt.Sprintf("%s/asset.png", path)); err != nil { - return - } - if _, err = f.Write(contentAsset); err != nil { - return + writef(fmt.Sprintf("%s/body%d%s", dir, l, lang), contents[lang]) + writef(fmt.Sprintf("%s/asset.png", dir), string(asset)) + + if err != nil { + break } - f.Close() } return diff --git a/template.go b/template.go @@ -36,6 +36,7 @@ func LoadTemplateDir(dir string) ([]suti.Template, error) { ppath := filepath.Join(dir, strings.TrimSuffix(file, filepath.Ext(file))) if _, err := os.Stat(ppath); err == nil { var partials []string + // TODO: calling loadPaths again is inefficient if partials, err = loadPaths(ppath); err != nil { return nil, err } else {