From 329dcc39cd936d8938f291eb75f733bc1ee3e10c Mon Sep 17 00:00:00 2001 From: Fred Pauchet Date: Mon, 7 Nov 2022 19:10:49 +0100 Subject: [PATCH] Write root page using a template --- README.md | 2 +- main.go | 2 ++ main_test.go | 12 ------- models/models.go | 22 +++++++++++++ models/models_test.go | 72 ------------------------------------------ templates/index.gohtml | 9 ++++++ 6 files changed, 34 insertions(+), 85 deletions(-) delete mode 100755 main_test.go delete mode 100644 models/models_test.go create mode 100644 templates/index.gohtml diff --git a/README.md b/README.md index 27ebfe5..f67ebf1 100755 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # jack -A static blog generator written in Go \ No newline at end of file +A static blog generator written in Go diff --git a/main.go b/main.go index 2fe539f..89f27e2 100755 --- a/main.go +++ b/main.go @@ -67,6 +67,8 @@ func main() { site.Append(&article) } + site.WriteRootPage() + site.Build() fmt.Println("HTML files were written to: ", *outputDir) diff --git a/main_test.go b/main_test.go deleted file mode 100755 index 1caa2f3..0000000 --- a/main_test.go +++ /dev/null @@ -1,12 +0,0 @@ -package main - -import "testing" - -func TestSayHi(t *testing.T) { - expected := "Hi, I'm Jack" - greeting := sayHi() - - if greeting != expected { - t.Errorf("Greeting was incorrect, got: '%s', want: '%s'", greeting, expected) - } -} diff --git a/models/models.go b/models/models.go index 18273ec..76560ae 100644 --- a/models/models.go +++ b/models/models.go @@ -3,9 +3,11 @@ package models import ( "bytes" "fmt" + "html/template" "io/ioutil" "log" "os" + "path" "strings" "github.com/yuin/goldmark" @@ -59,6 +61,26 @@ func (s *Site) Append(a *Article) { fmt.Println(categories) } +func (s *Site) WriteRootPage() { + t, err := template.ParseFiles("templates/index.gohtml") + + if err != nil { + panic(err) + } + + file, err := os.Create(path.Join(s.OutputDir, "index.html")) + + if err != nil { + panic(err) + } + + err = t.Execute(file, s) + + if err != nil { + panic(err) + } +} + func (s *Site) Build() { for _, article := range s.Articles { article.Convert() diff --git a/models/models_test.go b/models/models_test.go deleted file mode 100644 index 0879cca..0000000 --- a/models/models_test.go +++ /dev/null @@ -1,72 +0,0 @@ -package models - -import ( - "reflect" - "testing" -) - -func TestArticle_FromFile(t *testing.T) { - type fields struct { - Title string - HtmlContent string - publishedDate string - Url string - File string - } - tests := []struct { - name string - fields fields - want Article - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := Article{ - Title: tt.fields.Title, - HtmlContent: tt.fields.HtmlContent, - publishedDate: tt.fields.publishedDate, - Url: tt.fields.Url, - File: tt.fields.File, - } - if got := a.FromFile(); !reflect.DeepEqual(got, tt.want) { - t.Errorf("Article.FromFile() = %v, want %v", got, tt.want) - } - }) - } -} - -func TestArticle_FromContent(t *testing.T) { - type fields struct { - Title string - HtmlContent string - publishedDate string - Url string - File string - } - type args struct { - content []byte - } - tests := []struct { - name string - fields fields - args args - want Article - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := Article{ - Title: tt.fields.Title, - HtmlContent: tt.fields.HtmlContent, - publishedDate: tt.fields.publishedDate, - Url: tt.fields.Url, - File: tt.fields.File, - } - if got := a.FromContent(tt.args.content); !reflect.DeepEqual(got, tt.want) { - t.Errorf("Article.FromContent() = %v, want %v", got, tt.want) - } - }) - } -} diff --git a/templates/index.gohtml b/templates/index.gohtml new file mode 100644 index 0000000..4dad095 --- /dev/null +++ b/templates/index.gohtml @@ -0,0 +1,9 @@ +

Site generated by Jack

+ +

{{ .Name }}

+ +

Articles

+ +{{ range .Articles }} +

{{ .Title }}

+{{ end }}