site/rules.min
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
'hastysite import
;Routing
(
(dict) expect -> :meta
meta /id :id
meta /ext :ext
(
((id "home" ==) (
meta (
("index" %id)
(".html" %ext)
) tap
))
((true) (
meta (
(".html" %ext)
("$1/index" (id) => % %id)
) tap
))
) case
) ^set-destination
;Process Markdown content
(
(dict) expect -> :meta
"" :page
"" :contents
meta /content-type :tpl
meta (
(input-fread @contents meta)
(settings /title %site-title)
(:temp contents temp markdown @contents temp)
(contents %contents)
(:temp tpl temp mustache @page temp)
(page %contents)
) tap
) ^process-content
;Process CSS asset
(
(dict) expect -> :meta
"" :contents
meta (
(input-fread @contents meta)
(:temp contents preprocess-css @contents temp)
(contents %contents)
) tap
output-fwrite
) ^process-css-asset
;;; Main ;;;
;Filter and sort posts by timestamp
contents
('content-type dhas?) filter
(/content-type "post" ==) filter
(:a :b a /timestamp b /timestamp >) sort :posts
;Process contents
contents (
(dict) expect -> :content
content (/id "news" ==) (content posts %posts @content) when
(
((content /id "/" split last "^[._]" match?) ()) ;Ignore files starting with a dot or underscore
((true) (content process-content set-destination output-fwrite))
) case
) foreach
;Process assets
assets (
(dict) expect ->
dup
(
((/ext ".css" match?) (process-css-asset))
((/id "/" split last "^[._]" match?) ()) ;Ignore files starting with a dot or underscore
((true) (output-cp))
) case
) foreach
|