瀏覽代碼

added the tagging system

master
XeonSquared 1 年之前
父節點
當前提交
494a5d133d
共有 2 個檔案被更改,包括 104 行新增0 行删除
  1. +50
    -0
      graph.lua
  2. +54
    -0
      tags.lua

+ 50
- 0
graph.lua 查看文件

@@ -0,0 +1,50 @@
#!/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("}")

+ 54
- 0
tags.lua 查看文件

@@ -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

Loading…
取消
儲存