62 lines
1.1 KiB
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
|
|
}
|