summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile5
-rw-r--r--scripts/subpages.lua25
2 files changed, 29 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 8846a3e..ae1e75d 100644
--- a/Makefile
+++ b/Makefile
@@ -47,7 +47,7 @@ subpages = $(patsubst content/%.md,.cache/meta/%.json, \
47 $(shell test -d $(patsubst .cache/meta%,content%,$(1)) && find $(patsubst .cache/meta%,content%,$(1)) -maxdepth 1 -type f -name "*.md" ! -name "index.md") \ 47 $(shell test -d $(patsubst .cache/meta%,content%,$(1)) && find $(patsubst .cache/meta%,content%,$(1)) -maxdepth 1 -type f -name "*.md" ! -name "index.md") \
48 $(shell test -d $(patsubst .cache/meta%,content%,$(1)) && find $(patsubst .cache/meta%,content%,$(1)) -mindepth 2 -maxdepth 2 -type f -name "index.md")) 48 $(shell test -d $(patsubst .cache/meta%,content%,$(1)) && find $(patsubst .cache/meta%,content%,$(1)) -mindepth 2 -maxdepth 2 -type f -name "index.md"))
49 49
50.cache/meta/%.json: content/%.md $$(call subpages,$$(call namespace,$$@,)) scripts/subpages.jq scripts/metadata_tpl.json | .cache/meta 50.cache/meta/%.json: content/%.md $$(call subpages,$$(call namespace,$$@,)) scripts/subpages.lua scripts/subpages.jq scripts/metadata_tpl.json | .cache/meta
51 $(info [META] $< -> $@) 51 $(info [META] $< -> $@)
52 52
53 mkdir -p $(@D) 53 mkdir -p $(@D)
@@ -66,6 +66,9 @@ subpages = $(patsubst content/%.md,.cache/meta/%.json, \
66 pandoc \ 66 pandoc \
67 -f markdown-citations \ 67 -f markdown-citations \
68 -t html5 \ 68 -t html5 \
69 --lua-filter scripts/subpages.lua \
70 $(GLOBAL_METADATA) \
71 --metadata namespace="$(NAMESPACE)" \
69 -o "$@.content" "$<" 72 -o "$@.content" "$<"
70 jq '. + { content: $$content }' --rawfile content "$@.content" "$@.meta" > "$@" 73 jq '. + { content: $$content }' --rawfile content "$@.content" "$@.meta" > "$@"
71 rm "$@.pages" 74 rm "$@.pages"
diff --git a/scripts/subpages.lua b/scripts/subpages.lua
new file mode 100644
index 0000000..95f68f5
--- /dev/null
+++ b/scripts/subpages.lua
@@ -0,0 +1,25 @@
1local path = require 'pandoc.path'
2
3local namespace = ''
4local siteUrl = ''
5
6function meta(meta)
7 namespace = pandoc.utils.stringify(meta.namespace)
8 siteUrl = pandoc.utils.stringify(meta.site.url):gsub("/$", "")
9end
10
11function image(el)
12 if path.is_relative(el.src) then el.src = siteUrl .. path.join({ namespace, el.src }) end
13
14 return el
15end
16
17function link(el)
18 if path.is_relative(el.target) then
19 el.target = siteUrl .. path.join({ namespace, el.target })
20 end
21
22 return el
23end
24
25return { { Meta = meta }, { Image = image, Link = link } }