From 2762f24493e5cb6e7b78ff55d9252ed24398c505 Mon Sep 17 00:00:00 2001 From: dvs1 Date: Sat, 28 Dec 2024 16:02:18 +1000 Subject: TODO-- Directory level metadata files. --- notYetAnotherWiki.lua | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) (limited to 'notYetAnotherWiki.lua') diff --git a/notYetAnotherWiki.lua b/notYetAnotherWiki.lua index be46646..65137b5 100755 --- a/notYetAnotherWiki.lua +++ b/notYetAnotherWiki.lua @@ -120,6 +120,109 @@ for k, v in pairs(sites) do local body, metadata, err = lcmark.convert(cm, "html", {smart = true, yaml_metadata = true, columns = 0}) if nil == body then print('oops! ' .. err) else + + + if '' == body then + -- A simple v.metadata = metadata wont work, you end up with a reference so that changes to metadata get applied to v.metadata. + v.metadata = {} + for l, y in pairs(metadata) do + v.metadata[l] = y + end + local argh = {} + for l, y in ipairs(v.files) do + if w.name ~= y.name then table.insert(argh, y) end + end + v.files = argh + print('') + else + + local bod, err = lcmark.compile_template(body) + if nil == bod then print('oops! ' .. err) else + local templateFile = metadata.template + if nil == file then + templateFile = nil + else + if nil == templateFile then templateFile = 'default' end + templateFile = templateFile .. '.template' + for m, x in pairs(globalData) do if nil == metadata[m] then metadata[m] = x else print('metadata already has ' .. m) end end + if nil ~= v.metadata then + for m, x in pairs(v.metadata) do if nil == metadata[m] then metadata[m] = x else print('metadata already has ' .. m) end end + end + end + + if nil ~= v.files then + for m, x in ipairs(v.files) do + metadata.menu = metadata.menu .. x.URL .. '\n' + end + end + if nil ~= v.subs then + for m, x in pairs(v.subs) do + metadata.header = metadata.header .. x.URL + end + end + + local num = #(v.bits) + local trail = 'home   ' + local p = v.parent + for i = 1, num do + trail = trail .. '' .. v.bits[i] .. '   ' + end + trail = trail .. w.name + metadata.trail = trail + + metadata.body = lcmark.apply_template(bod, metadata) + + local tm = '' + if nil ~= templateFile then + local h = io.open(templateFile, 'r') + if nil ~= h then + tm = tm .. h:read('*a') + h:close() + else + print('oops! No such file ' .. templateFile) + end + + local template, err = lcmark.compile_template(tm) + if nil == template then print('oops! ' .. err) else + result = lcmark.apply_template(template, metadata) + end + else + result = body + end + + if ('' ~= result) and (nil ~= file) then + local base = path .. w.name .. '.HTML' + print(base) + local a, e = io.open(base, 'w') + if nil == a then print('Could not open ' .. base .. ' - ' .. e) else + a:write(result) + a:close() + end + else + print('') + end + end + + end + end + + h:close() + else + print('oops! No such file ' .. file) + end + + end + end + +end + + local h = io.open(file, 'r') + if nil ~= h then + local cm = h:read('*a') + local result = '' + local body, metadata, err = lcmark.convert(cm, "html", {smart = true, yaml_metadata = true, columns = 0}) + + if nil == body then print('oops! ' .. err) else local bod, err = lcmark.compile_template(body) if nil == bod then print('oops! ' .. err) else local templateFile = metadata.template -- cgit v1.1