From e92c41835debff682e092e6adb8f05e3f90865c6 Mon Sep 17 00:00:00 2001 From: Fred Pauchet Date: Thu, 27 Oct 2022 20:45:27 +0200 Subject: [PATCH] Move convert function to models --- .gitignore | 0 README.md | 0 go.mod | 6 +++++ go.sum | 7 ++++++ main.go | 41 ++++++-------------------------- main_test.go | 0 models/models.go | 61 ++++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 81 insertions(+), 34 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 README.md mode change 100644 => 100755 go.mod create mode 100644 go.sum mode change 100644 => 100755 main_test.go create mode 100644 models/models.go diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/go.mod b/go.mod old mode 100644 new mode 100755 index 5dee5a6..89c20c7 --- a/go.mod +++ b/go.mod @@ -2,3 +2,9 @@ module jack go 1.18 +require github.com/yuin/goldmark v1.4.14 + +require ( + github.com/yuin/goldmark-meta v1.1.0 // indirect + gopkg.in/yaml.v2 v2.3.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..af3b18b --- /dev/null +++ b/go.sum @@ -0,0 +1,7 @@ +github.com/yuin/goldmark v1.4.14 h1:jwww1XQfhJN7Zm+/a1ZA/3WUiEBEroYFNTiV3dKwM8U= +github.com/yuin/goldmark v1.4.14/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yuin/goldmark-meta v1.1.0 h1:pWw+JLHGZe8Rk0EGsMVssiNb/AaPMHfSRszZeUeiOUc= +github.com/yuin/goldmark-meta v1.1.0/go.mod h1:U4spWENafuA7Zyg+Lj5RqK/MF+ovMYtBvXi1lBb2VP0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/main.go b/main.go index e6b0da7..1ccfb48 100755 --- a/main.go +++ b/main.go @@ -1,17 +1,12 @@ package main import ( - "bytes" "flag" "fmt" + "jack/models" "log" "os" "path/filepath" - - "github.com/yuin/goldmark" - "github.com/yuin/goldmark/extension" - "github.com/yuin/goldmark/parser" - "github.com/yuin/goldmark/renderer/html" ) func walk(rootDir string) ([]string, error) { @@ -33,32 +28,6 @@ func walk(rootDir string) ([]string, error) { return files, err } -func convertMarkdownToHtml(file string) { - - content, err := os.ReadFile(file) - if err != nil { - log.Fatal(err) - } - - md := goldmark.New( - goldmark.WithExtensions(extension.GFM), - goldmark.WithParserOptions( - parser.WithAutoHeadingID(), - ), - goldmark.WithRendererOptions( - html.WithHardWraps(), - html.WithXHTML(), - ), - ) - - var buf bytes.Buffer - if err := md.Convert(content, &buf); err != nil { - panic(err) - } - - fmt.Println(buf.String()) -} - func main() { var rootDir *string @@ -73,7 +42,7 @@ func main() { outputDir = flag.String("out", defaultOutputDir, "Specify the output directory") flag.Usage = func() { fmt.Printf("Jack expects: \n") - fmt.Printf("./jack -d \n") + fmt.Printf("./jack -dir \n") } flag.Parse() @@ -81,7 +50,11 @@ func main() { for _, file := range files { fmt.Println(file) - convertMarkdownToHtml(file) + article := models.Article{ + File: file, + } + article.ReadFile() + fmt.Println(article) } fmt.Println(*outputDir) diff --git a/main_test.go b/main_test.go old mode 100644 new mode 100755 diff --git a/models/models.go b/models/models.go new file mode 100644 index 0000000..1622b90 --- /dev/null +++ b/models/models.go @@ -0,0 +1,61 @@ +package models + +import ( + "bytes" + "fmt" + "log" + "os" + "time" + + "github.com/yuin/goldmark" + meta "github.com/yuin/goldmark-meta" + "github.com/yuin/goldmark/extension" + "github.com/yuin/goldmark/parser" + "github.com/yuin/goldmark/renderer/html" +) + +type Article struct { + Title string + HtmlContent string + publishedDate string + Url string + File string +} + +func (a Article) PublishedDate() { + var t time.Time + fmt.Println(t) +} + +func (a Article) ReadFile() Article { + + content, err := os.ReadFile(a.File) + if err != nil { + log.Fatal(err) + } + + md := goldmark.New( + goldmark.WithExtensions(extension.GFM, meta.Meta), + goldmark.WithParserOptions( + parser.WithAutoHeadingID(), + ), + goldmark.WithRendererOptions( + html.WithHardWraps(), + html.WithXHTML(), + ), + ) + + var buf bytes.Buffer + context := parser.NewContext() + if err := md.Convert(content, &buf, parser.WithContext(context)); err != nil { + panic(err) + } + metadata := meta.Get(context) + a.Title, _ = metadata["Title"].(string) + a.HtmlContent = buf.String() + + fmt.Println(a.Title) + fmt.Println(a.HtmlContent) + + return a +}