diff options
Diffstat (limited to 'scripts/metadata_filter.lua')
-rw-r--r-- | scripts/metadata_filter.lua | 35 |
1 files changed, 15 insertions, 20 deletions
diff --git a/scripts/metadata_filter.lua b/scripts/metadata_filter.lua index fb7b3c9..61fe90f 100644 --- a/scripts/metadata_filter.lua +++ b/scripts/metadata_filter.lua | |||
@@ -13,7 +13,8 @@ function format_date(date) | |||
13 | return pandoc.MetaMap({ | 13 | return pandoc.MetaMap({ |
14 | yyyy_mm_dd = pandoc.MetaString(os.date("%F", time)), | 14 | yyyy_mm_dd = pandoc.MetaString(os.date("%F", time)), |
15 | yyyy = pandoc.MetaString(os.date("%Y", time)), | 15 | yyyy = pandoc.MetaString(os.date("%Y", time)), |
16 | mm_dd = pandoc.MetaString(os.date("%m-%d", time)), | 16 | mm = pandoc.MetaString(os.date("%m", time)), |
17 | dd = pandoc.MetaString(os.date("%d", time)), | ||
17 | rfc3339 = pandoc.MetaString(os.date("%FT%T+00:00", time)) | 18 | rfc3339 = pandoc.MetaString(os.date("%FT%T+00:00", time)) |
18 | }) | 19 | }) |
19 | end | 20 | end |
@@ -91,15 +92,11 @@ function relative_to(dir, target) | |||
91 | return path | 92 | return path |
92 | end | 93 | end |
93 | 94 | ||
94 | function resolve_url(page_type, site_url, content_dir, base_dir, cur_file) | 95 | function resolve_url(page_type, site_url, output_dir, base_dir_out, cur_file_out) |
95 | if page_type == "page" then | 96 | local abs = cur_file_out:gsub("^" .. output_dir, ""):gsub("/index.html$", |
96 | cur_file = cur_file:gsub("%.md$", ".html") | 97 | "/") |
97 | elseif page_type == "feed" then | 98 | local rel = |
98 | cur_file = cur_file:gsub("%.md$", ".xml") | 99 | relative_to(base_dir_out, cur_file_out):gsub("/index.html$", "/") |
99 | end | ||
100 | |||
101 | local abs = cur_file:gsub("^" .. content_dir, ""):gsub("/index.html$", "/") | ||
102 | local rel = relative_to(base_dir, cur_file):gsub("/index.html$", "/") | ||
103 | 100 | ||
104 | return pandoc.MetaMap({ | 101 | return pandoc.MetaMap({ |
105 | abs = pandoc.MetaString(abs), | 102 | abs = pandoc.MetaString(abs), |
@@ -143,9 +140,7 @@ function create_main_menu_state(section, main_menu) | |||
143 | local item = main_menu[i] | 140 | local item = main_menu[i] |
144 | local active = pandoc.utils.stringify(item.id) == section.id | 141 | local active = pandoc.utils.stringify(item.id) == section.id |
145 | item.active = pandoc.MetaBool(active) | 142 | item.active = pandoc.MetaBool(active) |
146 | if active then | 143 | if active then active_item = item end |
147 | active_item = item | ||
148 | end | ||
149 | end | 144 | end |
150 | 145 | ||
151 | return pandoc.MetaMap({ | 146 | return pandoc.MetaMap({ |
@@ -206,10 +201,10 @@ function organize_subpages(pages) | |||
206 | end | 201 | end |
207 | 202 | ||
208 | function Meta(meta) | 203 | function Meta(meta) |
209 | meta.content_dir = meta.content_dir:gsub("/$", "") | 204 | meta.output_dir = meta.output_dir:gsub("/$", "") |
210 | meta.site.url = pandoc.utils.stringify(meta.site.url):gsub("/$", "") | 205 | meta.site.url = pandoc.utils.stringify(meta.site.url):gsub("/$", "") |
211 | meta.base_file = meta.base_file or meta.file | 206 | meta.base_file_out = meta.base_file_out or meta.file_out |
212 | meta.base_dir = meta.base_file:gsub("^(.*)/.-$", "%1") | 207 | meta.base_dir_out = meta.base_file_out:gsub("^(.*)/.-$", "%1") |
213 | meta.page_type = meta.page_type or "page" | 208 | meta.page_type = meta.page_type or "page" |
214 | 209 | ||
215 | meta.layout = resolve_layout(meta.layout) | 210 | meta.layout = resolve_layout(meta.layout) |
@@ -223,13 +218,13 @@ function Meta(meta) | |||
223 | 218 | ||
224 | if meta.page_type == "feed" then | 219 | if meta.page_type == "feed" then |
225 | meta.page = pandoc.MetaMap({ | 220 | meta.page = pandoc.MetaMap({ |
226 | url = resolve_url("page", meta.site.url, meta.content_dir, | 221 | url = resolve_url("page", meta.site.url, meta.output_dir, |
227 | meta.base_dir, meta.file) | 222 | meta.base_dir_out, meta.file_out) |
228 | }) | 223 | }) |
229 | end | 224 | end |
230 | 225 | ||
231 | meta.url = resolve_url(meta.page_type, meta.site.url, meta.content_dir, | 226 | meta.url = resolve_url(meta.page_type, meta.site.url, meta.output_dir, |
232 | meta.base_dir, meta.file) | 227 | meta.base_dir_out, meta.file_out) |
233 | meta.section = resolve_section(meta.url.abs) | 228 | meta.section = resolve_section(meta.url.abs) |
234 | meta.category = resolve_category(meta.categories[meta.section.id], | 229 | meta.category = resolve_category(meta.categories[meta.section.id], |
235 | meta.category) | 230 | meta.category) |