2023-01-16 05:24:07 +04:00
|
|
|
package web
|
|
|
|
|
|
|
|
import (
|
|
|
|
"embed"
|
|
|
|
"io/fs"
|
|
|
|
"net/http"
|
2023-02-05 04:43:09 +04:00
|
|
|
|
|
|
|
"git.arav.top/Arav/dwelling-home/pkg/article"
|
|
|
|
"github.com/gomarkdown/markdown"
|
2023-01-16 05:24:07 +04:00
|
|
|
)
|
|
|
|
|
|
|
|
// To install a Jade compiler: go install github.com/Joker/jade/cmd/jade@latest
|
2023-02-05 00:55:22 +04:00
|
|
|
//
|
|
|
|
//go:generate $GOPATH/bin/jade -basedir ./templates -pkg=web -stdbuf -stdlib -writer index.pug stuff.pug mindflow.pug about.pug
|
|
|
|
// guestbook.pug
|
|
|
|
//go:generate $GOPATH/bin/jade -basedir ./templates -pkg=web -stdbuf -stdlib -writer rss.pug
|
2023-02-05 04:43:09 +04:00
|
|
|
|
|
|
|
//go:generate $GOPATH/bin/jade -basedir ./templates -pkg=web -stdbuf -stdlib -writer article.pug
|
2023-01-16 05:24:07 +04:00
|
|
|
|
|
|
|
//go:embed assets
|
|
|
|
var assetsDir embed.FS
|
|
|
|
|
|
|
|
func Assets() http.FileSystem {
|
|
|
|
f, _ := fs.Sub(assetsDir, "assets")
|
|
|
|
return http.FS(f)
|
|
|
|
}
|
|
|
|
|
|
|
|
func AssetsGetFile(path string) ([]byte, error) {
|
|
|
|
return assetsDir.ReadFile("assets/" + path)
|
|
|
|
}
|
2023-02-05 04:43:09 +04:00
|
|
|
|
|
|
|
//go:embed articles
|
|
|
|
var articlesFS embed.FS
|
|
|
|
var articles map[string]article.Article = make(map[string]article.Article)
|
|
|
|
|
|
|
|
func GetArticle(name string) (*article.Article, error) {
|
|
|
|
if artcl, ok := articles[name]; ok {
|
|
|
|
return &artcl, nil
|
|
|
|
} else {
|
|
|
|
meta, err := articlesFS.ReadFile("articles/" + name + ".meta")
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
md, err := articlesFS.ReadFile("articles/" + name + ".md")
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
artcl := article.Article{
|
|
|
|
Body: markdown.ToHTML(md, nil, nil)}
|
|
|
|
|
|
|
|
artcl.ParseMetadata(meta)
|
|
|
|
|
|
|
|
articles[name] = artcl
|
|
|
|
|
|
|
|
return &artcl, nil
|
|
|
|
}
|
|
|
|
}
|