diff --git a/blog.lua b/blog.lua new file mode 100755 index 0000000..a031985 --- /dev/null +++ b/blog.lua @@ -0,0 +1,87 @@ +#!/usr/bin/env lua +local sitelib = require "sitelib" +local fs = require "lfs" + +print("Finding files...") +local ftab = {} +for file in fs.dir(sitelib.srcpath.."/blog") do + if file:sub(1,1) ~= "." then + local index = tonumber(file:match("(%d+).md")) + if index then + ftab[index] = file + end + end +end + +local pages = {} +local cpage = 1 +print("Generating pages...") +for i = #ftab, 1, -1 do + pages[cpage] = pages[cpage] or {} + local fname = ftab[i] + local outfile = sitelib.outpath.."/blog/"..fname:sub(1,-4)..".html" + local f=io.open(sitelib.srcpath.."/blog/"..fname,"rb") + local c = f:read("*a") + f:close() + local page = sitelib.parsepage(c) + local f = io.open(outfile,"wb") + f:write(""..(page.title or "").."\n") + f:write(sitelib.header) + f:write(page.html) + if ftab[i-1] or ftab[i+1] then + f:write("
\n") + if ftab[i+1] then + f:write("

Next

") + end + if ftab[i-1] then + f:write("

Previous

") + end + f:write("
") + end + if page.tags then + f:write("

Tags: ") + for w in page.tags:gmatch("%S+") do + f:write(''..w.." ") + end + end + f:write("

") + f:write(sitelib.footer) + f:close() + pages[cpage][#pages[cpage]+1] = {fname:sub(1,-4)..".html",page.title,page.md:match("\n\n(.-)\n")} + if #pages[cpage] == 10 then + cpage = cpage + 1 + end +end + +for k,v in pairs(pages) do + v.name = "index"..tostring(k)..".html" + if k == 1 then + v.name = "index.html" + end +end + +print("Generating index pages...") +for i,page in pairs(pages) do + local f = io.open(sitelib.outpath.."/blog/"..page.name,"wb") + f:write(""..(page.title or "").."\n") + f:write(sitelib.header) + f:write("

Blog

\n

Page "..tostring(i).."

\n") + for n,entry in ipairs(page) do + f:write("

"..entry[2].."

\n") + local fline = entry[3]:gsub("\"","\\\"") + fline = io.popen("echo \""..fline.."\" | markdown -"):read("*a") + f:write(fline) + end + if pages[i-1] or pages[i+1] then + f:write("
\n") + if pages[i+1] then + f:write("

Older

") + end + if pages[i-1] then + f:write("

Newer

") + end + f:write("
") + end + f:write(sitelib.footer) + f:close() +end