diff options
| author | dvs1 | 2024-12-16 20:54:10 +1000 |
|---|---|---|
| committer | dvs1 | 2024-12-16 20:54:10 +1000 |
| commit | 38883f20665f5dc81a3aa568e6d6d8749cab4c9f (patch) | |
| tree | f9e3ce877ccb96841afc48e99f0033c747550df5 /notYetAnotherWiki.lua | |
| parent | Let's see if I can use emoji. (diff) | |
| download | notYetAnotherWiki-38883f20665f5dc81a3aa568e6d6d8749cab4c9f.zip notYetAnotherWiki-38883f20665f5dc81a3aa568e6d6d8749cab4c9f.tar.gz notYetAnotherWiki-38883f20665f5dc81a3aa568e6d6d8749cab4c9f.tar.bz2 notYetAnotherWiki-38883f20665f5dc81a3aa568e6d6d8749cab4c9f.tar.xz | |
TODO-- Implement smart menus.
Diffstat (limited to 'notYetAnotherWiki.lua')
| -rwxr-xr-x | notYetAnotherWiki.lua | 83 |
1 files changed, 59 insertions, 24 deletions
diff --git a/notYetAnotherWiki.lua b/notYetAnotherWiki.lua index 9fa3178..cfe7459 100755 --- a/notYetAnotherWiki.lua +++ b/notYetAnotherWiki.lua | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | local lcmark = require("lcmark") | 3 | local lcmark = require("lcmark") |
| 4 | 4 | ||
| 5 | local createHTML = function(cm, file, menu) | 5 | local createHTML = function(cm, file, header, menu) |
| 6 | -- cm = string.gsub(cm, '._ ', '. ') | 6 | -- cm = string.gsub(cm, '._ ', '. ') |
| 7 | if nil ~= file then print('About to parse file ' .. file) end | 7 | if nil ~= file then print('About to parse file ' .. file) end |
| 8 | local result = '' | 8 | local result = '' |
| @@ -19,6 +19,7 @@ local createHTML = function(cm, file, menu) | |||
| 19 | templateFile = nil | 19 | templateFile = nil |
| 20 | else | 20 | else |
| 21 | metadata.menu = menu | 21 | metadata.menu = menu |
| 22 | metadata.header = header | ||
| 22 | end | 23 | end |
| 23 | metadata.body = lcmark.apply_template(bod, metadata) | 24 | metadata.body = lcmark.apply_template(bod, metadata) |
| 24 | 25 | ||
| @@ -55,43 +56,77 @@ local createHTML = function(cm, file, menu) | |||
| 55 | end | 56 | end |
| 56 | 57 | ||
| 57 | 58 | ||
| 58 | local cm = '' | 59 | local cm, filename, header, menu = '', '', '', '' |
| 59 | local filename = '' | 60 | local site = {} |
| 60 | local menu = '' | ||
| 61 | 61 | ||
| 62 | for l in io.popen('find . -name "*.md" -type f -printf "%P\n"'):lines() do | ||
| 63 | local s = {} | ||
| 64 | local f = '' | ||
| 65 | local c = 1 | ||
| 66 | for p in string.gmatch(l, '(%w+)/') do | ||
| 67 | table.insert(s, p) | ||
| 68 | c = c + #p + 1 | ||
| 69 | end | ||
| 70 | local full = string.sub(l, c, -1) | ||
| 71 | local base = string.gsub(full, '%.md$', '') | ||
| 72 | table.insert(s, base) | ||
| 62 | 73 | ||
| 63 | local h = io.open('menu.md', 'r') | 74 | if 'menu' == s[#s] then |
| 64 | if nil ~= h then | 75 | local h = io.open(l, 'r') |
| 65 | print('Found menu.md') | 76 | if nil ~= h then |
| 66 | menu = createHTML(h:read('*a')) | 77 | print('Found ' .. l) |
| 67 | h:close() | 78 | menu = createHTML(h:read('*a')) |
| 68 | menu = string.gsub(menu, 'ul>', 'menu>') | 79 | h:close() |
| 80 | menu = string.gsub(menu, 'ul>', 'menu>') | ||
| 81 | end | ||
| 82 | else | ||
| 83 | if 1 ~= #s then | ||
| 84 | site[l] = s | ||
| 85 | else | ||
| 86 | site[l] = base | ||
| 87 | end | ||
| 88 | end | ||
| 69 | end | 89 | end |
| 70 | 90 | ||
| 91 | -- TODO - Only do these first things if menu.md doesn't exist, the second for headers.md | ||
| 92 | --if '' == menu then | ||
| 93 | for k, v in pairs(site) do | ||
| 94 | if 'string' == type(v) then | ||
| 95 | local m = '[' .. v .. '](' .. v .. '.HTML)\n' | ||
| 96 | menu = menu .. string.gsub(createHTML(m), 'ul>', 'menu>') | ||
| 97 | else | ||
| 98 | local path = '' | ||
| 99 | for i, w in ipairs(v) do | ||
| 100 | path = path .. w .. '/' | ||
| 101 | end | ||
| 102 | header = header .. '<a href="' .. string.sub(path, 1, -2) .. '.HTML">' .. v[1] .. '</a> ' | ||
| 103 | end | ||
| 104 | end | ||
| 105 | --end | ||
| 71 | 106 | ||
| 72 | if 0 ~= #arg then | 107 | |
| 73 | for i,a in ipairs(arg) do | 108 | if 0 == #arg then |
| 74 | if filename == '' then filename = a end | 109 | for l in io.popen('find . -name "*.md" -type f -printf "%P\n"'):lines() do |
| 75 | local h = io.open(a, 'r') | 110 | cm = '' |
| 111 | local h = io.open(l, 'r') | ||
| 76 | if nil ~= h then | 112 | if nil ~= h then |
| 77 | cm = cm .. h:read('*a') | 113 | createHTML(h:read('*a'), l, header, menu) |
| 78 | h:close() | 114 | h:close() |
| 79 | else | 115 | else |
| 80 | print('oops! No such file ' .. a) | 116 | print('oops! No such file ' .. l) |
| 81 | end | 117 | end |
| 82 | end | 118 | end |
| 83 | if filename == '' then filename = 'test.md' end | ||
| 84 | createHTML(cm, filename, menu) | ||
| 85 | else | 119 | else |
| 86 | local sticks = io.popen('find . -name "*.md" -type f -printf "%P\n"') | 120 | for i,a in ipairs(arg) do |
| 87 | for l in sticks:lines() do | 121 | if filename == '' then filename = a end |
| 88 | cm = '' | 122 | local h = io.open(a, 'r') |
| 89 | local h = io.open(l, 'r') | ||
| 90 | if nil ~= h then | 123 | if nil ~= h then |
| 91 | createHTML(h:read('*a'), l, menu) | 124 | cm = cm .. h:read('*a') |
| 92 | h:close() | 125 | h:close() |
| 93 | else | 126 | else |
| 94 | print('oops! No such file ' .. l) | 127 | print('oops! No such file ' .. a) |
| 95 | end | 128 | end |
| 96 | end | 129 | end |
| 130 | if filename == '' then filename = 'test.md' end | ||
| 131 | createHTML(cm, filename, header, menu) | ||
| 97 | end | 132 | end |
