1

Compare commits

...

10 Commits

12 changed files with 189 additions and 72 deletions

8
README.md Normal file
View File

@ -0,0 +1,8 @@
<!-- +++
GitHub = "goldsmith-samples"
Layout = "page"
+++ -->
# Goldsmith-Samples
This is a repository of [Goldsmith](https://foosoft.net/projects/goldsmith/) samples.

View File

@ -3,8 +3,7 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <title>{{.Props.Title}}</title>
<title>{{.Meta.Title}}</title>
</head> </head>
<body> <body>
{{end}} {{end}}
@ -15,12 +14,8 @@
{{end}} {{end}}
{{define "page"}} {{define "page"}}
{{template "header" .}} {{template "header" .}}
<div class="container"> <h1>{{.Props.Title}}</h1>
<div class="page-header"> {{.Props.Content}}
<h1>{{.Meta.Title}}</h1> {{template "footer" .}}
</div>
{{.Meta.Content}}
</div>
{{template "footer" .}}
{{end}} {{end}}

View File

@ -4,22 +4,29 @@ import (
"flag" "flag"
"log" "log"
"github.com/FooSoft/goldsmith" "foosoft.net/projects/goldsmith"
"github.com/FooSoft/goldsmith-components/devserver" "foosoft.net/projects/goldsmith-components/devserver"
"github.com/FooSoft/goldsmith-components/plugins/frontmatter" "foosoft.net/projects/goldsmith-components/filters/condition"
"github.com/FooSoft/goldsmith-components/plugins/layout" "foosoft.net/projects/goldsmith-components/plugins/frontmatter"
"github.com/FooSoft/goldsmith-components/plugins/markdown" "foosoft.net/projects/goldsmith-components/plugins/layout"
"foosoft.net/projects/goldsmith-components/plugins/markdown"
"foosoft.net/projects/goldsmith-components/plugins/minify"
) )
type builder struct{} type builder struct {
dist bool
}
func (b *builder) Build(contentDir, buildDir, cacheDir string) { func (self *builder) Build(srcDir, dstDir, cacheDir string) {
errs := goldsmith.Begin(contentDir). errs := goldsmith.
Cache(cacheDir). Begin(srcDir). // read files from srcDir
Chain(frontmatter.New()). Chain(frontmatter.New()). // extract frontmatter and store it as metadata
Chain(markdown.New()). Chain(markdown.New()). // convert *.md files to *.html files
Chain(layout.New()). Chain(layout.New()). // apply *.gohtml templates to *.html files
End(buildDir) FilterPush(condition.New(self.dist)). // push a dist-only conditional filter onto the stack
Chain(minify.New()). // minify *.html, *.css, *.js, etc. files
FilterPop(). // pop off the last filter pushed onto the stack
End(dstDir) // write files to dstDir
for _, err := range errs { for _, err := range errs {
log.Print(err) log.Print(err)
@ -28,7 +35,8 @@ func (b *builder) Build(contentDir, buildDir, cacheDir string) {
func main() { func main() {
port := flag.Int("port", 8080, "server port") port := flag.Int("port", 8080, "server port")
dist := flag.Bool("dist", false, "final dist mode")
flag.Parse() flag.Parse()
devserver.DevServe(new(builder), *port, "content", "build", "cache") devserver.DevServe(&builder{*dist}, *port, "content", "build", "cache")
} }

View File

@ -1,14 +1,14 @@
{{define "breadcrumbs"}} {{define "breadcrumbs"}}
{{if and .Meta.CrumbParent .Meta.Crumbs}} {{if and .Props.CrumbParent .Props.Crumbs}}
<div> <div>
<nav class="breadcrumb"> <nav class="breadcrumb">
{{range .Meta.Crumbs.Ancestors}} {{range .Props.Crumbs.Ancestors}}
<a href="/{{.File.Path}}" class="breadcrumb-item">{{.File.Meta.Title}}</a> <a href="/{{.File.Path}}" class="breadcrumb-item">{{.File.Props.Title}}</a>
{{end}} {{end}}
{{if .Meta.Title}} {{if .Props.Title}}
<span class="breadcrumb-item active">{{.Meta.Title}}</span> <span class="breadcrumb-item active">{{.Props.Title}}</span>
{{else if eq .Meta.Layout "tag"}} {{else if eq .Props.Layout "tag"}}
<span class="breadcrumb-item active">Tagged &ldquo;{{.Meta.Tags.Index}}&rdquo;</span> <span class="breadcrumb-item active">Tagged &ldquo;{{.Props.TagState.CurrentTag.RawName}}&rdquo;</span>
{{end}} {{end}}
</nav> </nav>
</div> </div>

View File

@ -1,8 +1,8 @@
{{define "cloud"}} {{define "cloud"}}
{{if .Meta.TagState.Tags}} {{if .Props.TagState.CurrentTags}}
<div> <div>
{{range .Meta.TagState.Tags}} {{range .Props.TagState.CurrentTags}}
<a class="badge badge-secondary" href="/{{(index $.Meta.TagState.Info .).Path}}">{{.}}</a> <a class="badge badge-secondary" href="/{{.IndexFile.Path}}">{{.RawName}}</a>
{{end}} {{end}}
</div> </div>
{{end}} {{end}}

View File

@ -2,11 +2,11 @@
{{template "header" .}} {{template "header" .}}
{{template "navbar" .}} {{template "navbar" .}}
<div class="container"> <div class="container">
{{range .Meta.Groups.Blog}} {{range .Props.Groups.Blog}}
<div> <div>
<h2><a href="{{.Path}}">{{.Meta.Title}}</a></h2> <h2><a href="{{.Path}}">{{.Props.Title}}</a></h2>
<p> <p>
{{.Meta.Summary}} {{.Props.Summary}}
<a href="{{.Path}}">&hellip;</a> <a href="{{.Path}}">&hellip;</a>
</p> </p>
</div> </div>

View File

@ -4,14 +4,14 @@
{{template "github" .}} {{template "github" .}}
<div class="container"> <div class="container">
<h1> <h1>
{{.Meta.Title}} {{.Props.Title}}
{{if .Meta.SubTitle}} {{if .Props.SubTitle}}
<small>{{.Meta.SubTitle}}</small> <small>{{.Props.SubTitle}}</small>
{{end}} {{end}}
</h1> </h1>
{{template "cloud" .}} {{template "cloud" .}}
<hr> <hr>
{{.Meta.Content}} {{.Props.Content}}
{{template "breadcrumbs" .}} {{template "breadcrumbs" .}}
</div> </div>
{{template "footer" .}} {{template "footer" .}}
@ -21,11 +21,11 @@
{{template "header" .}} {{template "header" .}}
{{template "navbar" .}} {{template "navbar" .}}
<div class="container"> <div class="container">
<h1>Tagged &ldquo;{{.Meta.Tags.Index}}&rdquo;</h1> <h1>Tagged &ldquo;{{.Props.TagState.CurrentTag.RawName}}&rdquo;</h1>
<hr> <hr>
<ul> <ul>
{{range (index .Meta.Tags.Info .Meta.Tags.Index).Files}} {{range .Props.TagState.CurrentTag.TaggedFiles}}
<li><a href="/{{.Path}}">{{.Meta.Title}}</a></li> <li><a href="/{{.Path}}">{{.Props.Title}}</a></li>
{{end}} {{end}}
</ul> </ul>
{{template "breadcrumbs" .}} {{template "breadcrumbs" .}}
@ -40,8 +40,8 @@
<h1>Tags</h1> <h1>Tags</h1>
<hr> <hr>
<ul> <ul>
{{range $key, $value := .Meta.TagState.Info}} {{range .Props.TagState.TagsByCount}}
<li><a href="/{{(index $.Meta.TagState.Info $key).Path}}">{{$key}}</a> ({{len $value.Files}})</li> <li><a href="/{{.IndexFile.Path}}">{{.RawName}}</a> ({{len .TaggedFiles}})</li>
{{end}} {{end}}
</ul> </ul>
{{template "breadcrumbs" .}} {{template "breadcrumbs" .}}
@ -55,7 +55,7 @@
<div class="container"> <div class="container">
<h1>Index of /{{.Dir}}</h1> <h1>Index of /{{.Dir}}</h1>
<ul class="list-unstyled"> <ul class="list-unstyled">
{{range .Meta.Files}} {{range .Props.Files}}
{{if .IsDir}}<strong>{{end}} {{if .IsDir}}<strong>{{end}}
<li><a href="/{{.Path}}">{{.Name}}</a></li> <li><a href="/{{.Path}}">{{.Name}}</a></li>
{{if .IsDir}}</strong>{{end}} {{if .IsDir}}</strong>{{end}}

View File

@ -1,7 +1,7 @@
{{define "github"}} {{define "github"}}
{{if .Meta.GitHub}} {{if .Props.GitHub}}
<div> <div>
<a href="https://github.com/FooSoft/{{.Meta.GitHub}}" class="github-corner"> <a href="https://github.com/FooSoft/{{.Props.GitHub}}" class="github-corner">
<svg width="80" height="80" viewBox="0 0 250 250"> <svg width="80" height="80" viewBox="0 0 250 250">
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path> <path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path>
<path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path> <path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path>

View File

@ -9,11 +9,11 @@
<link rel="stylesheet" href="/lib/tether/css/tether-theme-basic.min.css"> <link rel="stylesheet" href="/lib/tether/css/tether-theme-basic.min.css">
<link rel="stylesheet" href="/lib/lightbox/ekko-lightbox.min.css"> <link rel="stylesheet" href="/lib/lightbox/ekko-lightbox.min.css">
<link rel="stylesheet" href="/main.css"> <link rel="stylesheet" href="/main.css">
{{if .Meta.Title}} {{if .Props.Title}}
<title>Goldsmith Sample - {{.Meta.Title}}</title> <title>Goldsmith Sample - {{.Props.Title}}</title>
{{else if eq .Meta.Layout "tag"}} {{else if eq .Props.Layout "tag"}}
<title>Goldsmith Sample - Tagged "{{.Meta.Tags.Index}}"</title> <title>Goldsmith Sample - Tagged "{{.Props.TagState.CurrentTag.RawName}}"</title>
{{else if eq .Meta.Layout "index"}} {{else if eq .Props.Layout "index"}}
<title>Goldsmith Sample - Index of /{{.Dir}}</title> <title>Goldsmith Sample - Index of /{{.Dir}}</title>
{{end}} {{end}}
</head> </head>
@ -25,7 +25,7 @@
<a class="navbar-brand" href="/">Goldsmith Sample</a> <a class="navbar-brand" href="/">Goldsmith Sample</a>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup"> <div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav"> <div class="navbar-nav">
{{$area := .Meta.Area}} {{$area := .Props.Area}}
<a class="nav-item nav-link {{if $area}}{{if eq $area "blog"}}active{{end}}{{end}}" href="/">Blog</a> <a class="nav-item nav-link {{if $area}}{{if eq $area "blog"}}active{{end}}{{end}}" href="/">Blog</a>
<a class="nav-item nav-link {{if $area}}{{if eq $area "portfolio"}}active{{end}}{{end}}" href="/portfolio/">Portfolio</a> <a class="nav-item nav-link {{if $area}}{{if eq $area "portfolio"}}active{{end}}{{end}}" href="/portfolio/">Portfolio</a>
<a class="nav-item nav-link {{if $area}}{{if eq $area "projects"}}active{{end}}{{end}}" href="/projects/">Projects</a> <a class="nav-item nav-link {{if $area}}{{if eq $area "projects"}}active{{end}}{{end}}" href="/projects/">Projects</a>

View File

@ -4,25 +4,25 @@ import (
"flag" "flag"
"log" "log"
"github.com/FooSoft/goldsmith" "foosoft.net/projects/goldsmith"
"github.com/FooSoft/goldsmith-components/devserver" "foosoft.net/projects/goldsmith-components/devserver"
"github.com/FooSoft/goldsmith-components/plugins/absolute" "foosoft.net/projects/goldsmith-components/plugins/absolute"
"github.com/FooSoft/goldsmith-components/plugins/breadcrumbs" "foosoft.net/projects/goldsmith-components/plugins/breadcrumbs"
"github.com/FooSoft/goldsmith-components/plugins/collection" "foosoft.net/projects/goldsmith-components/plugins/collection"
"github.com/FooSoft/goldsmith-components/plugins/document" "foosoft.net/projects/goldsmith-components/plugins/document"
"github.com/FooSoft/goldsmith-components/plugins/frontmatter" "foosoft.net/projects/goldsmith-components/plugins/frontmatter"
"github.com/FooSoft/goldsmith-components/plugins/index" "foosoft.net/projects/goldsmith-components/plugins/index"
"github.com/FooSoft/goldsmith-components/plugins/layout" "foosoft.net/projects/goldsmith-components/plugins/layout"
"github.com/FooSoft/goldsmith-components/plugins/markdown" "foosoft.net/projects/goldsmith-components/plugins/markdown"
"github.com/FooSoft/goldsmith-components/plugins/summary" "foosoft.net/projects/goldsmith-components/plugins/summary"
"github.com/FooSoft/goldsmith-components/plugins/syntax" "foosoft.net/projects/goldsmith-components/plugins/syntax"
"github.com/FooSoft/goldsmith-components/plugins/tags" "foosoft.net/projects/goldsmith-components/plugins/tags"
"github.com/FooSoft/goldsmith-components/plugins/thumbnail" "foosoft.net/projects/goldsmith-components/plugins/thumbnail"
"github.com/PuerkitoBio/goquery" "github.com/PuerkitoBio/goquery"
) )
func fixup(doc *goquery.Document) error { func fixup(file *goldsmith.File, doc *goquery.Document) error {
doc.Find("table").AddClass("table", "table-dark") doc.Find("table").AddClass("table").Find("thead").AddClass("thead-light")
doc.Find("blockquote").AddClass("blockquote") doc.Find("blockquote").AddClass("blockquote")
doc.Find("img[src*='thumb']").Each(func(i int, s *goquery.Selection) { doc.Find("img[src*='thumb']").Each(func(i int, s *goquery.Selection) {
thumbLink := s.ParentFiltered("a") thumbLink := s.ParentFiltered("a")
@ -37,7 +37,7 @@ func fixup(doc *goquery.Document) error {
type builder struct{} type builder struct{}
func (b *builder) Build(contentDir, buildDir, cacheDir string) { func (self *builder) Build(contentDir, buildDir, cacheDir string) {
tagMeta := map[string]interface{}{ tagMeta := map[string]interface{}{
"Area": "tags", "Area": "tags",
"CrumbParent": "tags", "CrumbParent": "tags",

29
go.mod Normal file
View File

@ -0,0 +1,29 @@
module foosoft.net/projects/goldsmith-samples
go 1.18
require (
foosoft.net/projects/goldsmith v0.0.0-20221015201244-4456f3b206ed
foosoft.net/projects/goldsmith-components v0.0.0-20220704013648-0ef739189a6a
github.com/PuerkitoBio/goquery v1.8.0
)
require (
github.com/alecthomas/chroma v0.10.0 // indirect
github.com/andybalholm/cascadia v1.3.1 // indirect
github.com/bmatcuk/doublestar v1.3.4 // indirect
github.com/disintegration/imaging v1.6.2 // indirect
github.com/dlclark/regexp2 v1.4.0 // indirect
github.com/fsnotify/fsnotify v1.5.4 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/naoina/go-stringutil v0.1.0 // indirect
github.com/naoina/toml v0.1.1 // indirect
github.com/rogpeppe/go-internal v1.8.1 // indirect
github.com/tdewolff/minify/v2 v2.11.11 // indirect
github.com/tdewolff/parse/v2 v2.6.0 // indirect
github.com/yuin/goldmark v1.4.12 // indirect
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 // indirect
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8 // indirect
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
)

77
go.sum Normal file
View File

@ -0,0 +1,77 @@
foosoft.net/projects/goldsmith v0.0.0-20220704005305-57dfa350ee16 h1:l1frLxPKO6q4OFj03MlDtV5D+6ao3LOC3Nos4oMBvmA=
foosoft.net/projects/goldsmith v0.0.0-20220704005305-57dfa350ee16/go.mod h1:/wzELI7txdHxRKr/koeTN9PlulwIB4Mtw9kzU4JRfUA=
foosoft.net/projects/goldsmith v0.0.0-20221015201244-4456f3b206ed h1:PZ4qy7G2y1z6qxc9yOYA5PFaVx8q0FM210iQCPlIp/8=
foosoft.net/projects/goldsmith v0.0.0-20221015201244-4456f3b206ed/go.mod h1:/wzELI7txdHxRKr/koeTN9PlulwIB4Mtw9kzU4JRfUA=
foosoft.net/projects/goldsmith-components v0.0.0-20220704013648-0ef739189a6a h1:ovW8xNmxqWHC7rdeOD+A52hE4/PMa2IzDEH8QmSTXIU=
foosoft.net/projects/goldsmith-components v0.0.0-20220704013648-0ef739189a6a/go.mod h1:/gU7EOC+3C7aBbNNK6iBzVCpLINP6UK2m7wu5DHOkLk=
github.com/PuerkitoBio/goquery v1.8.0 h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U=
github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI=
github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek=
github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s=
github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c=
github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA=
github.com/bmatcuk/doublestar v1.3.4 h1:gPypJ5xD31uhX6Tf54sDPUOBXTqKH4c9aPY66CyQrS0=
github.com/bmatcuk/doublestar v1.3.4/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE=
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1ei82L+c=
github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4=
github.com/djherbis/atime v1.1.0/go.mod h1:28OF6Y8s3NQWwacXc5eZTsEsiMzp7LF8MbXE+XJPdBE=
github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E=
github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI=
github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2/go.mod h1:0KeJpeMD6o+O4hW7qJOT7vyQPKrWmj26uf5wMc/IiIs=
github.com/naoina/go-stringutil v0.1.0 h1:rCUeRUHjBjGTSHl0VC00jUPLz8/F9dDzYI70Hzifhks=
github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0=
github.com/naoina/toml v0.1.1 h1:PT/lllxVVN0gzzSqSlHEmP8MJB4MY2U7STGxiouV4X8=
github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg=
github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/tdewolff/minify/v2 v2.11.11 h1:f8Ux7FpWSYckQQaFLOLrgMGMuyTfzTyA57I46bgJ7c0=
github.com/tdewolff/minify/v2 v2.11.11/go.mod h1:NiPwIL/9TtJIYFYOkuz8HUJ/KuRg/kUb21tTp9Baz3k=
github.com/tdewolff/parse/v2 v2.6.0 h1:f2D7w32JtqjCv6SczWkfwK+m15et42qEtDnZXHoNY70=
github.com/tdewolff/parse/v2 v2.6.0/go.mod h1:WzaJpRSbwq++EIQHYIRTpbYKNA3gn9it1Ik++q4zyho=
github.com/tdewolff/test v1.0.6/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
github.com/tdewolff/test v1.0.7 h1:8Vs0142DmPFW/bQeHRP3MV19m1gvndjUb1sn8yy74LM=
github.com/tdewolff/test v1.0.7/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
github.com/yuin/goldmark v1.4.12 h1:6hffw6vALvEDqJ19dOJvJKOoAOKe4NDaTqvd2sktGN0=
github.com/yuin/goldmark v1.4.12/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 h1:hVwzHzIUGRjiF7EcUjqNxk3NCfkPxbDKRdnNE1Rpg0U=
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8 h1:/6y1LfuqNuQdHAm0jjtPtgRcxIxjVZgm5OTu8/QhZvk=
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0=
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=