commit 8f6f49833ce447bc95b056ddb69500c16b540c2b
parent 805c20bce337bb03c110d03129675a29335759b1
Author: gearsix <gearsix@tuta.io>
Date: Wed, 23 Jun 2021 18:31:20 +0100
fixed content_test.go
Diffstat:
2 files changed, 44 insertions(+), 38 deletions(-)
diff --git a/content.go b/content.go
@@ -15,7 +15,7 @@ import (
"strings"
)
-var ContentBodyExts = [5]string{
+var ContentContentsExts = [5]string{
".txt", // plain-text
".html", // HTML
".md", // commonmark with non-intrusive extensions: linkify, auto heading id, unsafe HTML
@@ -39,13 +39,20 @@ func LoadContentDir(dir string) (c Content, e error) {
var path string
if info.IsDir() {
path = "/" + strings.TrimPrefix(fpath, dir)
- p := NewPage(path)
- for _, d := range strings.Split(fpath, "/") {
- if _, ok := defaults[d]; ok {
- p.Meta.MergeMeta(defaults[d], true)
+ page := NewPage(path)
+ for i, p := range path {
+ if p != '/' {
+ continue
+ }
+ dpath := path[:i]
+ if len(dpath) == 0 {
+ dpath = "/"
+ }
+ if _, ok := defaults[dpath]; ok {
+ page.Meta.MergeMeta(defaults[dpath], true)
}
}
- pages[path] = p
+ pages[path] = page
return nil
}
@@ -53,6 +60,7 @@ func LoadContentDir(dir string) (c Content, e error) {
path = strings.TrimPrefix(path, dir)
path = "/" + strings.TrimSuffix(path, "/")
page := pages[path]
+
if strings.Contains(fpath, ".page") || strings.Contains(fpath, ".default") {
var m Meta
if err = suti.LoadDataFile(fpath, &m); err != nil {
@@ -63,8 +71,8 @@ func LoadContentDir(dir string) (c Content, e error) {
} else if strings.Contains(fpath, ".defaults") {
defaults[path] = m
}
- } else if isContentBodyExt(filepath.Ext(fpath)) > -1 {
- page.NewBodyFromFile(fpath)
+ } else if isContentContentsExt(filepath.Ext(fpath)) > -1 {
+ page.NewContentsFromFile(fpath)
} else {
page.Assets = append(page.Assets, strings.TrimPrefix(fpath, path))
}
@@ -80,8 +88,8 @@ func LoadContentDir(dir string) (c Content, e error) {
return c, e
}
-func isContentBodyExt(ext string) int {
- for i, supported := range ContentBodyExts {
+func isContentContentsExt(ext string) int {
+ for i, supported := range ContentContentsExts {
if ext == supported {
return i
}
@@ -104,7 +112,7 @@ func (m Meta) MergeMeta(meta Meta, overwrite bool) {
type Page struct {
Path string
Meta Meta
- Body []string
+ Contents []string
Assets []string
}
@@ -112,12 +120,12 @@ func NewPage(path string) Page {
return Page{
Path: path,
Meta: make(Meta),
- Body: make([]string, 0),
+ Contents: make([]string, 0),
Assets: make([]string, 0),
}
}
-func (p *Page) NewBodyFromFile(fpath string) (err error) {
+func (p *Page) NewContentsFromFile(fpath string) (err error) {
var buf []byte
if f, err := os.Open(fpath); err == nil {
buf, err = io.ReadAll(f)
@@ -128,7 +136,7 @@ func (p *Page) NewBodyFromFile(fpath string) (err error) {
}
var body string
- for _, lang := range ContentBodyExts {
+ for _, lang := range ContentContentsExts {
if filepath.Ext(fpath) == lang {
switch lang {
case ".txt":
@@ -154,9 +162,9 @@ func (p *Page) NewBodyFromFile(fpath string) (err error) {
}
if len(body) == 0 {
- panic("invalid filetype (" + filepath.Ext(fpath) + ") passed to NewBodyFromFile")
+ panic("invalid filetype (" + filepath.Ext(fpath) + ") passed to NewContentsFromFile")
}
- p.Body = append(p.Body, body)
+ p.Contents = append(p.Contents, body)
return err
}
diff --git a/content_test.go b/content_test.go
@@ -18,9 +18,9 @@ func TestLoadContentDir(t *testing.T) {
t.Fatalf("LoadContentDir failed: %s", err)
}
- if len(c) != len(contentBody) {
+ if len(c) != len(contentContents)-1 {
t.Fatalf("invalid number of pages returned (%d should be %d)",
- len(c), len(contentBody))
+ len(c), len(contentContents))
}
for _, p := range c {
if len(p.Path) == 0 {
@@ -29,8 +29,8 @@ func TestLoadContentDir(t *testing.T) {
if _, ok := p.Meta["test"]; !ok || len(p.Meta) == 0 {
t.Fatalf("empty Meta for page:\n%s\n", p)
}
- if len(p.Body) == 0 {
- t.Fatalf("empty Body for page:\n%s\n", p)
+ if len(p.Contents) == 0 {
+ t.Fatalf("empty Contents for page:\n%s\n", p)
}
if len(p.Assets) == 0 {
t.Fatalf("empty Assets for page:\n%s\n", p)
@@ -38,7 +38,7 @@ func TestLoadContentDir(t *testing.T) {
}
}
-var contentBody = map[string]string{
+var contentContents = map[string]string{
".txt": `p1
p2
@@ -103,29 +103,27 @@ func createProjectContents(dir string) (err error) {
var f *os.File
var path string
- for l, lang := range ContentBodyExts {
- if l > 0 {
- path, err = os.MkdirTemp(dir, "page")
- } else {
+ for l, lang := range ContentContentsExts {
+ 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()
- */
+ 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()
+ } else if l > 1 {
+ path, err = os.MkdirTemp(path, "page")
}
f, err = os.Create(fmt.Sprintf("%s/body%d%s", path, l, lang))
if err != nil {
return
}
- f.WriteString(contentBody[lang])
+ f.WriteString(contentContents[lang])
f.Close()
if f, err = os.Create(fmt.Sprintf("%s/asset.png", path)); err != nil {