|
|
@@ -0,0 +1,54 @@ |
|
|
|
#!/usr/bin/env lua |
|
|
|
local sitelib = require "sitelib" |
|
|
|
local fs = require "lfs" |
|
|
|
local tags = {} |
|
|
|
|
|
|
|
if not fs.attributes(sitelib.outpath.."/tag") then |
|
|
|
fs.mkdir(sitelib.outpath.."/tag") |
|
|
|
end |
|
|
|
|
|
|
|
print("Building list of markdown files") |
|
|
|
local mdfiles = {} |
|
|
|
local dqueue = {sitelib.srcpath} |
|
|
|
for k,path in pairs(dqueue) do |
|
|
|
for file in fs.dir(path) do |
|
|
|
if file:sub(1,1) ~= "." then |
|
|
|
local attr = fs.attributes(path.."/"..file) |
|
|
|
if attr.mode == "directory" then |
|
|
|
dqueue[#dqueue+1] = path.."/"..file |
|
|
|
elseif file:sub(-3) == ".md" then |
|
|
|
mdfiles[#mdfiles+1] = path.."/"..file |
|
|
|
end |
|
|
|
end |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
print("Reading tags...") |
|
|
|
for k,infile in pairs(mdfiles) do |
|
|
|
local f = io.open(infile,"rb") |
|
|
|
local c = f:read("*a") |
|
|
|
f:close() |
|
|
|
local page = sitelib.parsepage(c) |
|
|
|
if page.tags then |
|
|
|
print((infile:sub(sitelib.srcpath:len()+1)):sub(1,-4)..".html") |
|
|
|
for w in page.tags:gmatch("%S+") do |
|
|
|
tags[w] = tags[w] or {} |
|
|
|
table.insert(tags[w],{(infile:sub(sitelib.srcpath:len()+1)):sub(1,-4)..".html",page.title,page.md:match("\n\n(.-)\n")}) |
|
|
|
end |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
print("Writing individual tag indexes...") |
|
|
|
for tag,v in pairs(tags) do |
|
|
|
local f = io.open(sitelib.outpath.."/tag/"..tag..".html","wb") |
|
|
|
f:write("<html><head><title>Tag: "..tag.."</title>\n") |
|
|
|
f:write(sitelib.header) |
|
|
|
f:write("<h1>Tag: "..tag.."</h1>\n") |
|
|
|
for l,m in pairs(v) do |
|
|
|
f:write("<h3><a href=\""..m[1].."\">"..m[2].."</a></h3>\n") |
|
|
|
local fline = m[3]:gsub("\"","\\\"") |
|
|
|
f:write(io.popen("echo \""..fline.."\" | markdown -"):read("*a")) |
|
|
|
end |
|
|
|
f:write(sitelib.footer) |
|
|
|
f:close() |
|
|
|
end |