Attempt to add resources
This commit is contained in:
parent
94d9d6127e
commit
698dc9d224
9
resources/statyk/img-to-webp.lua
Normal file
9
resources/statyk/img-to-webp.lua
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
-- img-to-webp.lua
|
||||||
|
function Image(el)
|
||||||
|
local fileext = el.src:match("%.[^%.]+$");
|
||||||
|
-- DEBUG -- print("LUA IMG: ", fileext);
|
||||||
|
if ( fileext == ".jpg" or fileext == ".png" or fileext == ".jpeg" ) then
|
||||||
|
el.src = el.src .. ".webp"
|
||||||
|
end
|
||||||
|
return el
|
||||||
|
end
|
22
resources/statyk/metas.lua
Normal file
22
resources/statyk/metas.lua
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
-- intermediate store for variables and their values
|
||||||
|
local variables = {}
|
||||||
|
|
||||||
|
--- Function called for each raw block element.
|
||||||
|
function RawBlock (raw)
|
||||||
|
-- Don't do anything unless the block contains *org* markup.
|
||||||
|
if raw.format ~= 'org' then return nil end
|
||||||
|
|
||||||
|
-- extract variable name and value
|
||||||
|
local name, value = raw.text:match '#%+(%w+):%s*(.+)$'
|
||||||
|
if name and value then
|
||||||
|
variables[name] = value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Add the extracted variables to the document's metadata.
|
||||||
|
function Meta (meta)
|
||||||
|
for name, value in pairs(variables) do
|
||||||
|
meta[name] = value
|
||||||
|
end
|
||||||
|
return meta
|
||||||
|
end
|
5
resources/statyk/org-links-to-html.lua
Normal file
5
resources/statyk/org-links-to-html.lua
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
-- links-to-html.lua
|
||||||
|
function Link(el)
|
||||||
|
el.target = string.gsub(string.gsub(el.target, "%.org", ".html"), "%.html::", ".html#" )
|
||||||
|
return el
|
||||||
|
end
|
73
statyk
73
statyk
|
@ -36,13 +36,16 @@ exec clojure $OPTS -Sdeps "$DEPS" -M "$0" "$@"
|
||||||
)
|
)
|
||||||
|
|
||||||
(ns statyk
|
(ns statyk
|
||||||
(:require [clojure.tools.cli :refer [parse-opts]]
|
(:require
|
||||||
[clojure.pprint :as pp]
|
[clojure.java.shell :refer [sh]]
|
||||||
[clojure.string :as string]
|
[clojure.tools.cli :refer [parse-opts]]
|
||||||
[ring.util.mime-type :as mime]
|
[clojure.java.io :as io]
|
||||||
[ring.util.response :as resp]
|
[clojure.pprint :as pp]
|
||||||
[babashka.fs :as fs]
|
[clojure.string :as string]
|
||||||
[ring.adapter.jetty :refer [run-jetty]]))
|
[ring.util.mime-type :as mime]
|
||||||
|
[ring.util.response :as resp]
|
||||||
|
[babashka.fs :as fs]
|
||||||
|
[ring.adapter.jetty :refer [run-jetty]]))
|
||||||
|
|
||||||
(def config
|
(def config
|
||||||
{:source-directory "_src"
|
{:source-directory "_src"
|
||||||
|
@ -117,9 +120,34 @@ exec clojure $OPTS -Sdeps "$DEPS" -M "$0" "$@"
|
||||||
{:ext ext
|
{:ext ext
|
||||||
:dst-path dst-path}))
|
:dst-path dst-path}))
|
||||||
|
|
||||||
(defn build-html
|
(defn find-org-mode-options
|
||||||
|
[org]
|
||||||
|
;; TODO search for options in the org mode file
|
||||||
|
;; (seek org #"^#+options:")
|
||||||
|
)
|
||||||
|
|
||||||
|
(defn org->html
|
||||||
[src-file dst-file]
|
[src-file dst-file]
|
||||||
|
(let [options (find-org-mode-options src-file)]
|
||||||
|
(sh "pandoc"
|
||||||
|
(when (:toc options) "--toc")
|
||||||
|
(when-let [tpl (:template options)]
|
||||||
|
(format "--template=%s" tpl))
|
||||||
|
"--lua-filter=.statik/org-links-to-html.lua"
|
||||||
|
"--lua-filter=.statik/img-to-webp.lua"
|
||||||
|
"--lua-filter=.statik/metas.lua"
|
||||||
|
"--mathml"
|
||||||
|
"--from" "org"
|
||||||
|
"--to" "html5"
|
||||||
|
"--standalone"
|
||||||
|
src-file
|
||||||
|
"--output"
|
||||||
|
dst-file)))
|
||||||
|
|
||||||
|
(defn build-html
|
||||||
|
[ext src-file dst-file]
|
||||||
;; TODO PANDOC then minify
|
;; TODO PANDOC then minify
|
||||||
|
(sh "pandoc" )
|
||||||
)
|
)
|
||||||
(defn build-css
|
(defn build-css
|
||||||
[src-file dst-file]
|
[src-file dst-file]
|
||||||
|
@ -135,7 +163,7 @@ exec clojure $OPTS -Sdeps "$DEPS" -M "$0" "$@"
|
||||||
"Table with specific commands per type of file"
|
"Table with specific commands per type of file"
|
||||||
[src-file dst-file ext]
|
[src-file dst-file ext]
|
||||||
(cond
|
(cond
|
||||||
(html-src-type? ext) (build-html src-file dst-file)
|
(html-src-type? ext) (build-html ext src-file dst-file)
|
||||||
(css-src-type? ext) (build-css src-file dst-file)
|
(css-src-type? ext) (build-css src-file dst-file)
|
||||||
(img-src-type? ext) (build-img src-file dst-file)
|
(img-src-type? ext) (build-img src-file dst-file)
|
||||||
:else (fs/copy src-file dst-file)))
|
:else (fs/copy src-file dst-file)))
|
||||||
|
@ -157,13 +185,28 @@ exec clojure $OPTS -Sdeps "$DEPS" -M "$0" "$@"
|
||||||
"- clean delete generated files in _site"]))
|
"- clean delete generated files in _site"]))
|
||||||
(System/exit 0))
|
(System/exit 0))
|
||||||
|
|
||||||
|
(defn cp-resource [resource-name]
|
||||||
|
(let [dst (str ".statyk/" resource-name)]
|
||||||
|
(println (format "Generating: %s" dst))
|
||||||
|
(if-let [resource (io/resource (str "statyk/" resource-name))]
|
||||||
|
(spit dst (slurp resource))
|
||||||
|
(err! "Cannot read %s" (io/resource (str "statyk/" resource-name)))
|
||||||
|
)))
|
||||||
|
|
||||||
(defn init-site
|
(defn init-site
|
||||||
[options]
|
[_options]
|
||||||
(mapv (fn [d]
|
(doseq [d [(:source-directory config)
|
||||||
(println (format "Create dir: %s" d))
|
(:dest-directory config)
|
||||||
(fs/create-dirs d)) [(:source-directory config)
|
(:templates-directory config)
|
||||||
(:dest-directory config)
|
".statyk"]]
|
||||||
(:templates-directory config)]))
|
(println (format "Create dir: %s" d))
|
||||||
|
(fs/create-dirs d))
|
||||||
|
(doseq [f ["org-links-to-html.lua"
|
||||||
|
"img-to-webp.lua"
|
||||||
|
"metas.lua"]]
|
||||||
|
(cp-resource f))
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
(defn -main [& args]
|
(defn -main [& args]
|
||||||
(let [{:keys [options arguments summary errors]
|
(let [{:keys [options arguments summary errors]
|
||||||
|
|
Loading…
Reference in a new issue