|
- #!/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("}")
|