changeset 59:ed3aa9aaad0a draft

Add functions to build Amber and GCSS (taken from original project) Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author yakumo.izuru
date Fri, 21 Apr 2023 20:25:31 +0000
parents ef2697e4490e
children cf7277e42ece
files cmd/aya/main.go go.mod go.sum
diffstat 3 files changed, 70 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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)
 	}
--- 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
 )
 
--- 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=