51 lines
1.3 KiB
Lua
Executable File
51 lines
1.3 KiB
Lua
Executable File
#!/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
|
|
|
|
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
|
|
|
|
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})
|
|
end
|
|
end
|
|
end
|
|
|
|
local haslabel = {}
|
|
print("graph blog {")
|
|
for tag,v in pairs(tags) do
|
|
for l,m in pairs(v) do
|
|
if not haslabel[m[1]:match("(%d+).html")] then
|
|
print(m[1]:match("(%d+).html").." [label=\""..m[2]:gsub("\"","").."\"];")
|
|
haslabel[m[1]:match("(%d+).html")] = true
|
|
end
|
|
print(tag:gsub("-","").." -- "..m[1]:match("(%d+).html")..";")
|
|
end
|
|
end
|
|
print("}")
|