Changeset 79 in code
- Timestamp:
- Dec 11, 2023, 5:23:49 PM (18 months ago)
- Location:
- trunk
- Files:
-
- 5 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/cmd/aya/main.go
r78 r79 1 // $TheSupernovaDuo: marisa.chaotic.ninja/aya/cmd/aya, v0. 6.9 2023-12-09 23:30:07+0000, yakumo_izuru Exp $1 // $TheSupernovaDuo: marisa.chaotic.ninja/aya/cmd/aya, v0.7.0 2023-12-11 17:22:51+0000, yakumo_izuru Exp $ 2 2 package main 3 3 … … 10 10 "path/filepath" 11 11 "strings" 12 "text/template"13 12 "time" 14 13 15 "github.com/eknkc/amber"16 "github.com/russross/blackfriday/v2"17 "github.com/yosssi/gcss"18 14 "gopkg.in/yaml.v3" 19 15 "marisa.chaotic.ninja/aya" … … 175 171 } 176 172 177 // Renders markdown with the given layout into html expanding all the macros178 func buildMarkdown(path string, w io.Writer, vars Vars) error {179 v, body, err := getVars(path, vars)180 extensions := blackfriday.CommonExtensions|blackfriday.AutoHeadingIDs|blackfriday.Strikethrough|blackfriday.Footnotes181 if err != nil {182 return err183 }184 content, err := render(body, v)185 if err != nil {186 return err187 }188 v["content"] = string(blackfriday.Run([]byte(content),189 blackfriday.WithExtensions(extensions),190 ))191 if w == nil {192 out, err := os.Create(filepath.Join(PUBDIR, renameExt(path, "", ".html")))193 if err != nil {194 return err195 }196 defer out.Close()197 w = out198 }199 return buildHTML(filepath.Join(AYADIR, v["layout"]), w, v)200 }201 202 // Renders hypertext file expanding all variable macros inside it203 func buildHTML(path string, w io.Writer, vars Vars) error {204 v, body, err := getVars(path, vars)205 if err != nil {206 return err207 }208 if body, err = render(body, v); err != nil {209 return err210 }211 tmpl, err := template.New("").Delims("<%", "%>").Parse(body)212 if err != nil {213 return err214 }215 if w == nil {216 f, err := os.Create(filepath.Join(PUBDIR, path))217 if err != nil {218 return err219 }220 defer f.Close()221 w = f222 }223 return tmpl.Execute(w, vars)224 }225 226 // Renders .amber file into .html227 func buildAmber(path string, w io.Writer, vars Vars) error {228 v, body, err := getVars(path, vars)229 if err != nil {230 return err231 }232 a := amber.New()233 if err := a.Parse(body); err != nil {234 fmt.Println(body)235 return err236 }237 238 t, err := a.Compile()239 if err != nil {240 return err241 }242 243 htmlBuf := &bytes.Buffer{}244 if err := t.Execute(htmlBuf, v); err != nil {245 return err246 }247 248 if body, err = render(string(htmlBuf.Bytes()), v); err != nil {249 return err250 }251 252 if w == nil {253 f, err := os.Create(filepath.Join(PUBDIR, renameExt(path, ".amber", ".html")))254 if err != nil {255 return err256 }257 defer f.Close()258 w = f259 }260 _, err = io.WriteString(w, body)261 return err262 }263 264 // Compiles .gcss into .css265 func buildGCSS(path string, w io.Writer) error {266 f, err := os.Open(path)267 if err != nil {268 return err269 }270 defer f.Close()271 272 if w == nil {273 s := strings.TrimSuffix(path, ".gcss") + ".css"274 css, err := os.Create(filepath.Join(PUBDIR, s))275 if err != nil {276 return err277 }278 defer css.Close()279 w = css280 }281 _, err = gcss.Compile(w, f)282 return err283 }284 285 // Copies file as is from path to writer286 func buildRaw(path string, w io.Writer) error {287 in, err := os.Open(path)288 if err != nil {289 return err290 }291 defer in.Close()292 if w == nil {293 if out, err := os.Create(filepath.Join(PUBDIR, path)); err != nil {294 return err295 } else {296 defer out.Close()297 w = out298 }299 }300 _, err = io.Copy(w, in)301 return err302 }303 304 173 // This function passes the files to build to their corresponding functions 305 174 // As far as I'm aware, Markdown has three possible filename extensions, -
trunk/version.go
r78 r79 9 9 var ( 10 10 // Set to current tag 11 Version = "v0. 6.9"11 Version = "v0.7.0" 12 12 Time = time.Now() 13 13 )
Note:
See TracChangeset
for help on using the changeset viewer.