diff options
| author | Natanael Copa <ncopa@alpinelinux.org> | 2014-05-26 13:44:59 +0200 |
|---|---|---|
| committer | Natanael Copa <ncopa@alpinelinux.org> | 2014-05-26 13:44:59 +0200 |
| commit | 6104c4538a614d7bc91338f4b151a02b6e685e41 (patch) | |
| tree | d5b2bdfa585411a8ec9fad661bd91359b0a7cd2a /_scripts | |
| download | alpine-mksite-6104c4538a614d7bc91338f4b151a02b6e685e41.tar.bz2 alpine-mksite-6104c4538a614d7bc91338f4b151a02b6e685e41.tar.xz | |
initial commit
Diffstat (limited to '_scripts')
| -rw-r--r-- | _scripts/generate_page.lua | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/_scripts/generate_page.lua b/_scripts/generate_page.lua new file mode 100644 index 0000000..d6d60c3 --- /dev/null +++ b/_scripts/generate_page.lua @@ -0,0 +1,67 @@ +#!/usr/bin/lua + +markdown = require('discount') +yaml = require('yaml') + +function read_markdown(file) + local f = assert(io.open(file)) + local data = f:read("*a") + f:close() + local yml, md = data:match("^(%-%-%-.-%-%-%-)(.*)$") + local t + local pagename = file:gsub(".md$","") + if yml and md then + t = yaml.load(yml) + t.pagename = pagename + return t, markdown(md) + else + return {title=pagename, pagename=pagename}, markdown(data) + end +end + +function read_layout(file) + -- try look for template for 'path/file.md' in this order: + -- path/file.template.html + -- layout.template.html + for _,t in pairs{file:gsub(".md$", ".template.html"), + "layout.template.html"} do + local f = io.open(t) + if f then + local data = f:read("*a") + f:close() + return data + end + end +end + +function generate_navbar(active) + local f = assert(io.open("_navbar.yaml")) + local nav = yaml.load(f:read("*a")) + f:close() + local data = "" + for align, menu in pairs(nav) do + data = ('%s<span class="%s">'):format(data, align) + for _,t in pairs(menu) do + for label, ref in pairs(t) do + data = ('%s<a href="%s">%s</a>'):format(data, + ref, label) + end + end + data = data ..'</span>\n' + end + return data +end + +function replace_tags(content, meta) + return content:gsub("{{(.-)}}", function(tag) + return meta[tag] + end) +end + +page, content = read_markdown(assert(arg[1])) +layout = read_layout(arg[1]) +page.navbar = generate_navbar() + +page.content = replace_tags(content, page) + +io.write((replace_tags(layout, page))) |
