summaryrefslogtreecommitdiff
path: root/plugins/toolkit.lua
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/toolkit.lua')
-rw-r--r--plugins/toolkit.lua42
1 files changed, 42 insertions, 0 deletions
diff --git a/plugins/toolkit.lua b/plugins/toolkit.lua
new file mode 100644
index 0000000..e5f162a
--- /dev/null
+++ b/plugins/toolkit.lua
@@ -0,0 +1,42 @@
+local toolkit = {}
+
+toolkit.file_iterator = function(directory)
+ local _, files = argent.scanDirectory(directory)
+ local i = 0
+ local n = table.getn(files)
+ return function()
+ i = i+1
+ if i<=n then return files[i] end
+ end
+end
+
+
+toolkit.basename = function(filename)
+ return string.gsub(filename, '%.lua$', '')
+end
+
+
+local function extract_page(file)
+ if not string.match(file, '%.lua$') then return nil end
+
+ local success, result = pcall(loadfile(file), 0, 1)
+ if not success then return nil end
+ return result
+end
+
+toolkit.pages = function(directory)
+ page_array = {}
+ local path = argent.config.site_directory..directory
+ for file in toolkit.file_iterator(path) do
+ local page = extract_page(path..file)
+ if page then
+ page.href = '/'..directory..toolkit.basename(file)..'.html'
+ table.insert(page_array, page)
+ end
+ end
+
+ return page_array
+end
+
+
+return toolkit