Working markdown in blog
This commit is contained in:
parent
81af984d96
commit
b0c7b6a690
@ -1,5 +1,7 @@
|
|||||||
package blogviewer
|
package blogviewer
|
||||||
|
|
||||||
|
import "html/template"
|
||||||
|
|
||||||
type BlogFileData struct {
|
type BlogFileData struct {
|
||||||
Header string `bson:"header"`
|
Header string `bson:"header"`
|
||||||
Blocks []*Block `bson:"blocks"`
|
Blocks []*Block `bson:"blocks"`
|
||||||
@ -9,3 +11,8 @@ type Block struct {
|
|||||||
Type string `bson:"type"`
|
Type string `bson:"type"`
|
||||||
Data []string `bson:"data"`
|
Data []string `bson:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type RenderedBlock struct {
|
||||||
|
Type string `bson:"type"`
|
||||||
|
Data []template.HTML `bson:"data"`
|
||||||
|
}
|
||||||
|
@ -229,25 +229,27 @@ func (b *BlogViewerApplication) Render(filePath string, appCtx appCtx.AppContext
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
newData := []RenderedBlock{}
|
||||||
for _, block := range data.Blocks {
|
for _, block := range data.Blocks {
|
||||||
newData := []string{}
|
newBlock := RenderedBlock{}
|
||||||
switch block.Type {
|
switch block.Type {
|
||||||
case "image":
|
case "image":
|
||||||
for _, image := range block.Data {
|
// for _, image := range block.Data {
|
||||||
newData = append(newData, b.fs.RelativeToAbsolute(appCtx, image))
|
// newData = append(newData, b.fs.RelativeToAbsolute(appCtx, image))
|
||||||
}
|
// }
|
||||||
case "markdown":
|
case "markdown":
|
||||||
for _, data := range block.Data {
|
for _, data := range block.Data {
|
||||||
str := b.mLib.Render([]byte(data))
|
renderedMD := b.mLib.Render([]byte(data))
|
||||||
newData = append(newData, str)
|
newBlock.Data = append(newBlock.Data, renderedMD)
|
||||||
}
|
}
|
||||||
|
newData = append(newData, newBlock)
|
||||||
}
|
}
|
||||||
block.Data = newData
|
// block.Data = newData
|
||||||
}
|
}
|
||||||
|
|
||||||
return gin.H{
|
return gin.H{
|
||||||
"header": data.Header,
|
"header": data.Header,
|
||||||
"blocks": data.Blocks,
|
"blocks": newData,
|
||||||
// "html": html,
|
// "html": html,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
1
go.mod
1
go.mod
@ -37,6 +37,7 @@ require (
|
|||||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect
|
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect
|
||||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||||
github.com/pelletier/go-toml/v2 v2.0.6 // indirect
|
github.com/pelletier/go-toml/v2 v2.0.6 // indirect
|
||||||
|
github.com/russross/blackfriday v1.6.0
|
||||||
github.com/russross/blackfriday/v2 v2.1.0
|
github.com/russross/blackfriday/v2 v2.1.0
|
||||||
github.com/thinkerou/favicon v0.2.0
|
github.com/thinkerou/favicon v0.2.0
|
||||||
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
|
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
|
||||||
|
2
go.sum
2
go.sum
@ -91,6 +91,8 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
|
|||||||
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
|
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
|
||||||
github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
|
github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
|
||||||
github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
|
github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
|
||||||
|
github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww=
|
||||||
|
github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY=
|
||||||
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
|
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
|
||||||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package libs
|
package libs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"html/template"
|
||||||
|
|
||||||
"github.com/microcosm-cc/bluemonday"
|
"github.com/microcosm-cc/bluemonday"
|
||||||
"github.com/russross/blackfriday/v2"
|
"github.com/russross/blackfriday/v2"
|
||||||
)
|
)
|
||||||
@ -8,10 +10,17 @@ import (
|
|||||||
type MarkdownLib struct {
|
type MarkdownLib struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ml *MarkdownLib) Render(s []byte) string {
|
func (ml *MarkdownLib) Render(s []byte) template.HTML {
|
||||||
output := blackfriday.Run(s)
|
output := blackfriday.Run(s)
|
||||||
_ = output
|
_ = output
|
||||||
html := bluemonday.UGCPolicy().SanitizeBytes(output)
|
html := bluemonday.UGCPolicy().SanitizeBytes(output)
|
||||||
// println(string(html))
|
// println(string(html))
|
||||||
return string(html)
|
kek := template.HTML(html)
|
||||||
|
return kek
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// func (ml MarkdownLib) MarkDowner(args ...interface{}) template.HTML {
|
||||||
|
// s := blackfriday.MarkdownCommon([]byte(fmt.Sprintf("%s", args...)))
|
||||||
|
|
||||||
|
// return template.HTML(s)
|
||||||
|
// }
|
||||||
|
@ -32,22 +32,27 @@ func PrivateRoutes(port string, webfs *webfilesystem.WebFileSystem, webde *wde.W
|
|||||||
router.MaxMultipartMemory = 8 << 20 // 8 MiB
|
router.MaxMultipartMemory = 8 << 20 // 8 MiB
|
||||||
|
|
||||||
router.GET("/", func(ctx *gin.Context) {
|
router.GET("/", func(ctx *gin.Context) {
|
||||||
|
// appString := AppString{
|
||||||
|
// AppPath: "/Applications/Finder.app",
|
||||||
|
// Args: []string{"/home/user"},
|
||||||
|
// }
|
||||||
|
|
||||||
appString := AppString{
|
appString := AppString{
|
||||||
AppPath: "/Applications/Finder.app",
|
AppPath: "/Applications/BlogViewer.app",
|
||||||
Args: []string{"/home/user"},
|
Args: []string{"/home/user/Blogs/blog1.blog"},
|
||||||
}
|
}
|
||||||
|
|
||||||
aboutMe := AppString{
|
// aboutMe := AppString{
|
||||||
AppPath: "/Applications/AboutMe.app",
|
// AppPath: "/Applications/AboutMe.app",
|
||||||
Args: []string{},
|
// Args: []string{},
|
||||||
}
|
// }
|
||||||
|
|
||||||
appString2 := AppString{
|
// appString2 := AppString{
|
||||||
AppPath: "/Applications/Finder.app",
|
// AppPath: "/Applications/Finder.app",
|
||||||
Args: []string{"/home/user/", "--desktop", "desktop-layer"},
|
// Args: []string{"/home/user/", "--desktop", "desktop-layer"},
|
||||||
}
|
// }
|
||||||
|
|
||||||
autostart := []AppString{appString2, appString, aboutMe}
|
autostart := []AppString{appString}
|
||||||
ctx.HTML(http.StatusOK, "index.tmpl", gin.H{
|
ctx.HTML(http.StatusOK, "index.tmpl", gin.H{
|
||||||
"autostart": autostart,
|
"autostart": autostart,
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user