Separate the build<FORMAT> functions into their own source files
Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja> git-svn-id: file:///srv/svn/repo/aya/trunk@79 cec141ff-132a-4243-88a5-ce187bd62f94
This commit is contained in:
47
cmd/aya/amber.go
Normal file
47
cmd/aya/amber.go
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
// Render .amber files into .html
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"github.com/eknkc/amber"
|
||||||
|
)
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
30
cmd/aya/gcss.go
Normal file
30
cmd/aya/gcss.go
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
// Render .gcss files into .css
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
"github.com/yosssi/gcss"
|
||||||
|
)
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
32
cmd/aya/html.go
Normal file
32
cmd/aya/html.go
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
// Renders hypertext files expanding all variable macros inside it
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"text/template"
|
||||||
|
)
|
||||||
|
|
||||||
|
func buildHTML(path string, w io.Writer, vars Vars) error {
|
||||||
|
v, body, err := getVars(path, vars)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if body, err = render(body, v); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
tmpl, err := template.New("").Delims("<%", "%>").Parse(body)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if w == nil {
|
||||||
|
f, err := os.Create(filepath.Join(PUBDIR, path))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
w = f
|
||||||
|
}
|
||||||
|
return tmpl.Execute(w, vars)
|
||||||
|
}
|
||||||
133
cmd/aya/main.go
133
cmd/aya/main.go
@@ -1,4 +1,4 @@
|
|||||||
// $TheSupernovaDuo: marisa.chaotic.ninja/aya/cmd/aya, v0.6.9 2023-12-09 23:30:07+0000, yakumo_izuru Exp $
|
// $TheSupernovaDuo: marisa.chaotic.ninja/aya/cmd/aya, v0.7.0 2023-12-11 17:22:51+0000, yakumo_izuru Exp $
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -9,12 +9,8 @@ import (
|
|||||||
"os/exec"
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
"text/template"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/eknkc/amber"
|
|
||||||
"github.com/russross/blackfriday/v2"
|
|
||||||
"github.com/yosssi/gcss"
|
|
||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
"marisa.chaotic.ninja/aya"
|
"marisa.chaotic.ninja/aya"
|
||||||
)
|
)
|
||||||
@@ -174,133 +170,6 @@ func render(s string, vars Vars) (string, error) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Renders markdown with the given layout into html expanding all the macros
|
|
||||||
func buildMarkdown(path string, w io.Writer, vars Vars) error {
|
|
||||||
v, body, err := getVars(path, vars)
|
|
||||||
extensions := blackfriday.CommonExtensions|blackfriday.AutoHeadingIDs|blackfriday.Strikethrough|blackfriday.Footnotes
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
content, err := render(body, v)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
v["content"] = string(blackfriday.Run([]byte(content),
|
|
||||||
blackfriday.WithExtensions(extensions),
|
|
||||||
))
|
|
||||||
if w == nil {
|
|
||||||
out, err := os.Create(filepath.Join(PUBDIR, renameExt(path, "", ".html")))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
defer out.Close()
|
|
||||||
w = out
|
|
||||||
}
|
|
||||||
return buildHTML(filepath.Join(AYADIR, v["layout"]), w, v)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Renders hypertext file expanding all variable macros inside it
|
|
||||||
func buildHTML(path string, w io.Writer, vars Vars) error {
|
|
||||||
v, body, err := getVars(path, vars)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if body, err = render(body, v); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
tmpl, err := template.New("").Delims("<%", "%>").Parse(body)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if w == nil {
|
|
||||||
f, err := os.Create(filepath.Join(PUBDIR, path))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
defer f.Close()
|
|
||||||
w = f
|
|
||||||
}
|
|
||||||
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)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
defer in.Close()
|
|
||||||
if w == nil {
|
|
||||||
if out, err := os.Create(filepath.Join(PUBDIR, path)); err != nil {
|
|
||||||
return err
|
|
||||||
} else {
|
|
||||||
defer out.Close()
|
|
||||||
w = out
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_, err = io.Copy(w, in)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// This function passes the files to build to their corresponding functions
|
// This function passes the files to build to their corresponding functions
|
||||||
// As far as I'm aware, Markdown has three possible filename extensions,
|
// As far as I'm aware, Markdown has three possible filename extensions,
|
||||||
// but .md is the most common one known.
|
// but .md is the most common one known.
|
||||||
|
|||||||
33
cmd/aya/markdown.go
Normal file
33
cmd/aya/markdown.go
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
// Renders markdown with the given layout into html expanding all the macros
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"github.com/russross/blackfriday/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
func buildMarkdown(path string, w io.Writer, vars Vars) error {
|
||||||
|
v, body, err := getVars(path, vars)
|
||||||
|
extensions := blackfriday.CommonExtensions|blackfriday.AutoHeadingIDs|blackfriday.Strikethrough|blackfriday.Footnotes
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
content, err := render(body, v)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
v["content"] = string(blackfriday.Run([]byte(content),
|
||||||
|
blackfriday.WithExtensions(extensions),
|
||||||
|
))
|
||||||
|
if w == nil {
|
||||||
|
out, err := os.Create(filepath.Join(PUBDIR, renameExt(path, "", ".html")))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer out.Close()
|
||||||
|
w = out
|
||||||
|
}
|
||||||
|
return buildHTML(filepath.Join(AYADIR, v["layout"]), w, v)
|
||||||
|
}
|
||||||
26
cmd/aya/raw.go
Normal file
26
cmd/aya/raw.go
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
// Copy files as-is from source to destination
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
)
|
||||||
|
|
||||||
|
func buildRaw(path string, w io.Writer) error {
|
||||||
|
in, err := os.Open(path)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer in.Close()
|
||||||
|
if w == nil {
|
||||||
|
if out, err := os.Create(filepath.Join(PUBDIR, path)); err != nil {
|
||||||
|
return err
|
||||||
|
} else {
|
||||||
|
defer out.Close()
|
||||||
|
w = out
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_, err = io.Copy(w, in)
|
||||||
|
return err
|
||||||
|
}
|
||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
// Set to current tag
|
// Set to current tag
|
||||||
Version = "v0.6.9"
|
Version = "v0.7.0"
|
||||||
Time = time.Now()
|
Time = time.Now()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user