go-jack/models/models.go

62 lines
1.1 KiB
Go

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
}