sitegen = require "sitegen" lfs = require "lfs" rootname = (str) -> result = string.gsub str, "%..+", "" result last = (list) -> list[#list] split = (str, delimiter="/") -> [capture for capture in string.gmatch str, "[^#{delimiter}]+"] join = (first, last, delimiter="/") -> table.concat({first, last}, delimiter) target = (path, prefix) -> join(prefix, rootname(last(split path))) posts = (path=".") -> {join(path, file), target(file, "/posts") for file in lfs.dir path when file != "." and file != ".."} path = "docs" names = [file for file in lfs.dir(path) when file != "." and file != ".."] tuples = for _, file in ipairs names {join(path, file), target(file, "/posts")} new_posts = (path=".") -> t = for _, file in ipairs names {join(path, file), target(file, "/posts")} t news = new_posts("docs") posts = {unpack tup for tup in *news} sitegen.create => @title = "Hello World" add "index.md" add path, target: target for path, target in pairs posts