# HG changeset patch # User yakumo.izuru # Date 1682108731 0 # Node ID ed3aa9aaad0abc4bb48c9660a43be7669b942017 # Parent ef2697e4490e814fceb64f43c0bcdcbe57c27be6 Add functions to build Amber and GCSS (taken from original project) Signed-off-by: Izuru Yakumo diff -r ef2697e4490e -r ed3aa9aaad0a cmd/aya/main.go --- a/cmd/aya/main.go Tue Apr 18 12:29:12 2023 +0000 +++ b/cmd/aya/main.go Fri Apr 21 20:25:31 2023 +0000 @@ -16,6 +16,8 @@ "gopkg.in/yaml.v2" "marisa.chaotic.ninja/aya" log "github.com/sirupsen/logrus" + "github.com/eknkc/amber" + "github.com/yosssi/gcss" ) const ( @@ -221,6 +223,64 @@ return tmpl.Execute(w, vars) } +// Renders .amber file into .html +func buildAmber(path string, w io.Writer, vars Vars) error { + v, body, err := getVars(path, vars) + if err != nil { + return err + } + a := amber.New() + if err := a.Parse(body); err != nil { + fmt.Println(body) + return err + } + + t, err := a.Compile() + if err != nil { + return err + } + + htmlBuf := &bytes.Buffer{} + if err := t.Execute(htmlBuf, v); err != nil { + return err + } + + if body, err = render(string(htmlBuf.Bytes()), v); err != nil { + return err + } + + if w == nil { + f, err := os.Create(filepath.Join(PUBDIR, renameExt(path, ".amber", ".html"))) + if err != nil { + return err + } + defer f.Close() + w = f + } + _, err = io.WriteString(w, body) + return err +} +// Compiles .gcss into .css +func buildGCSS(path string, w io.Writer) error { + f, err := os.Open(path) + if err != nil { + return err + } + defer f.Close() + + if w == nil { + s := strings.TrimSuffix(path, ".gcss") + ".css" + css, err := os.Create(filepath.Join(PUBDIR, s)) + if err != nil { + return err + } + defer css.Close() + w = css + } + _, err = gcss.Compile(w, f) + return err +} + // Copies file as is from path to writer func buildRaw(path string, w io.Writer) error { in, err := os.Open(path) @@ -246,6 +306,10 @@ return buildMarkdown(path, w, vars) } else if ext == ".html" || ext == ".xml" { return buildHTML(path, w, vars) + } else if ext == ".amber" { + return buildAmber(path, w, vars) + } else if ext == ".gcss" { + return buildGCSS(path, w) } else { return buildRaw(path, w) } diff -r ef2697e4490e -r ed3aa9aaad0a go.mod --- a/go.mod Tue Apr 18 12:29:12 2023 +0000 +++ b/go.mod Fri Apr 21 20:25:31 2023 +0000 @@ -3,8 +3,10 @@ go 1.17 require ( + github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385 github.com/russross/blackfriday/v2 v2.1.0 github.com/sirupsen/logrus v1.9.0 + github.com/yosssi/gcss v0.1.0 gopkg.in/yaml.v2 v2.4.0 ) diff -r ef2697e4490e -r ed3aa9aaad0a go.sum --- a/go.sum Tue Apr 18 12:29:12 2023 +0000 +++ b/go.sum Fri Apr 21 20:25:31 2023 +0000 @@ -1,6 +1,8 @@ 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/eknkc/amber v0.0.0-20171010120322-cdade1c07385 h1:clC1lXBpe2kTj2VHdaIu9ajZQe4kcEY9j0NsnDDBZ3o= +github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= 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/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= @@ -10,6 +12,8 @@ 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/yosssi/gcss v0.1.0 h1:jRuino7qq7kqntBIhT+0xSUI5/sBgCA/zCQ1Tuzd6Gg= +github.com/yosssi/gcss v0.1.0/go.mod h1:M3mTPOWZWjVROkXKZ2AiDzOBOXu2MqQeDXF/nKO44sI= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 h1:0A+M6Uqn+Eje4kHMK80dtF3JCXC4ykBgQG4Fe06QRhQ= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=