diff --git a/Makefile b/Makefile index 10f5203..e48ea8c 100644 --- a/Makefile +++ b/Makefile @@ -48,9 +48,10 @@ DST_PANDOC_FILES ?= $(patsubst %$(EXT),%.html, \ PANDOC_TEMPLATE ?= templates/post.html PANDOC_LUA_FILTER ?= engine/links-to-html.lua PANDOC_LUA_FILTER_IMG ?= engine/img-to-webp.lua +PANDOC_LUA_METAS ?= engine/metas.lua MK_HTML := engine/mk-html.sh -PANDOC := $(MK_HTML) $(PANDOC_TEMPLATE) $(PANDOC_LUA_FILTER) $(PANDOC_LUA_FILTER_IMG) -$(DST_DIR)/%.html: $(SRC_DIR)/%.org $(PANDOC_TEMPLATE) $(PANDOC_LUA_FILTER) $(PANDOC_LUA_FILTER_IMG) $(MK_HTML) $(ENV_VARS) +PANDOC := $(MK_HTML) $(PANDOC_TEMPLATE) $(PANDOC_LUA_FILTER) $(PANDOC_LUA_FILTER_IMG) $(PANDOC_LUA_METAS) +$(DST_DIR)/%.html: $(SRC_DIR)/%.org $(PANDOC_TEMPLATE) $(PANDOC_LUA_FILTER) $(PANDOC_LUA_FILTER_IMG) $(PANDOC_LUA_METAS) $(MK_HTML) $(ENV_VARS) @mkdir -p "$(dir $@)" $(PANDOC) "$<" "$@.tmp" minify --mime text/html "$@.tmp" > "$@" diff --git a/engine/metas.lua b/engine/metas.lua new file mode 100644 index 0000000..701c11d --- /dev/null +++ b/engine/metas.lua @@ -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 diff --git a/engine/mk-html.sh b/engine/mk-html.sh index c2aae09..e58953d 100755 --- a/engine/mk-html.sh +++ b/engine/mk-html.sh @@ -5,8 +5,9 @@ cd "$(git rev-parse --show-toplevel)" || exit 1 template="$1" luafilter="$2" luafilterimg="$3" -orgfile="$4" -htmlfile="$5" +luametas="$4" +orgfile="$5" +htmlfile="$6" tocoption="" if grep -ie '^#+options:' "$orgfile" | grep 'toc:t'>/dev/null; then @@ -18,6 +19,7 @@ pandoc $tocoption \ --template="$template" \ --lua-filter="$luafilter" \ --lua-filter="$luafilterimg" \ + --lua-filter="$luametas" \ --mathml \ --from org \ --to html5 \ diff --git a/src/posts/0019-utopia-tv-show/index.org b/src/posts/0019-utopia-tv-show/index.org index 432d6dc..83df0f4 100644 --- a/src/posts/0019-utopia-tv-show/index.org +++ b/src/posts/0019-utopia-tv-show/index.org @@ -14,6 +14,8 @@ #+lang: en #+options: auto-id:t #+startup: showeverything +#+lightbk: #ff0 +#+darkbk: #880 #+html_head_extra: