commit 9b46848c02746de7cc8bd24a6746f53d4832e2e9
parent 9d2d1693f8cf4f796641827c22f9f196e7e2a3d5
Author: Hugo Soucy <hugo@soucy.cc>
Date: Sun, 27 Nov 2022 08:08:47 -0500
Rename pagemeta to pagedata
Diffstat:
M | satelito/model.lua | | | 90 | +++++++++++++++++++++++++++++++++++++++++++------------------------------------ |
1 file changed, 49 insertions(+), 41 deletions(-)
diff --git a/satelito/model.lua b/satelito/model.lua
@@ -2,6 +2,7 @@
local model = {}
--
local etlua = require 'etlua'
+local inspect = require 'inspect'
local lfs = require 'lfs' -- luafilesystem
local lume = require 'satelito.lib.lume.lume'
local dirtree = require 'satelito.dirtree'
@@ -10,86 +11,93 @@ local list = require 'satelito.list'
local markdown = require 'discount' -- lua-discount
local template = require 'satelito.template'
-function model.set(filepath, config, contentdir)
- local pagemeta = file.get_metafile(filepath) or {}
+function model.set(filepath)
+ local pagedata = file.get_metafile(filepath) or {}
+ local config = _G.Satelito.config
+ local contentdir = _G.Satelito.contentdir
+ local publicdir = _G.Satelito.publicdir
+ local templates = _G.Satelito.templates
local time_created
-- If required properties are nil
- pagemeta.title = pagemeta.title or file.get_basename(filepath):match('(.+)%..*')
- pagemeta.date = pagemeta.date or os.date('%Y-%m-%d', lfs.attributes(filepath).change)
- pagemeta.datetime = pagemeta.datetime or os.date('%H:%M:%S', lfs.attributes(filepath).change)
+ pagedata.title = pagedata.title or file.get_basename(filepath):match('(.+)%..*')
+ pagedata.date = pagedata.date or os.date('%Y-%m-%d', lfs.attributes(filepath).change)
+ pagedata.datetime = pagedata.datetime or os.date('%H:%M:%S', lfs.attributes(filepath).change)
-- Path properties
- pagemeta.contentdir = contentdir
- pagemeta.path = filepath
- pagemeta.relpath = file.get_relpath(filepath, contentdir)
- pagemeta.reldir = pagemeta.relpath:match("(.*/)")
+ pagedata.contentdir = contentdir
+ pagedata.path = filepath
+ pagedata.relpath = file.get_relpath(filepath, contentdir)
+ pagedata.reldir = pagedata.relpath:match("(.*/)")
-- Link properties
- pagemeta.rellink = file.get_rellink(filepath, contentdir)
- pagemeta.rellinkdir = '/'.. (pagemeta.reldir ~= nil and pagemeta.reldir or '')
- pagemeta.permalink = file.get_permalink(filepath, contentdir, config.siteurl)
- pagemeta.exportlink = file.get_exportlink(filepath, contentdir, config.paths.public_html)
- pagemeta.dirlink = file.get_permalink(filepath, contentdir, config.siteurl):match("(.*/)")
+ pagedata.rellink = file.get_rellink(filepath, contentdir)
+ pagedata.rellinkdir = '/'.. (pagedata.reldir ~= nil and pagedata.reldir or '')
+ pagedata.permalink = file.get_permalink(filepath, contentdir, config.siteurl)
+ pagedata.exportlink = file.get_exportlink(filepath, contentdir, publicdir)
+ pagedata.dirlink = file.get_permalink(filepath, contentdir, config.siteurl):match("(.*/)")
-- Time properties
- time_created = (pagemeta.date..pagemeta.datetime):gsub('%W','')
+ time_created = (pagedata.date..pagedata.datetime):gsub('%W','')
- pagemeta.time_created = time_created
- pagemeta.time_modification = lfs.attributes(filepath).modification
- pagemeta.time_modified_child = file.get_lastmodified(lume.array(dirtree.get(file.get_dirname(filepath))))
+ pagedata.time_created = time_created
+ pagedata.time_modification = lfs.attributes(filepath).modification
+ pagedata.time_modified_child = file.get_lastmodified(lume.array(dirtree.get(file.get_dirname(filepath))))
-- Unique page ID for the Atom feed
- pagemeta.id = 'tag:' .. config.siteurl:match('^%w+://([^/]+)') .. ',' .. pagemeta.date .. ':' .. pagemeta.rellink
- pagemeta.idorder = pagemeta.rellinkdir .. time_created
+ pagedata.id = 'tag:' .. config.siteurl:match('^%w+://([^/]+)') .. ',' .. pagedata.date .. ':' .. pagedata.rellink
+ pagedata.idorder = pagedata.rellinkdir .. time_created
-- HTML content
if file.is_markdown(filepath) then
- pagemeta.content = markdown(file.read(filepath))
+ pagedata.content = markdown(file.read(filepath))
elseif file.is_html(filepath) then
- pagemeta.content = file.read(filepath)
+ pagedata.content = file.read(filepath)
end
-- Summary
- if pagemeta.summary then
- pagemeta.summary = markdown(pagemeta.summary)
+ if pagedata.summary then
+ pagedata.summary = markdown(pagedata.summary)
end
-- List (and Feed)
- if file.is_index(filepath) and pagemeta.list ~= false then
- pagemeta.list = file.get_collection(filepath, contentdir)
+ if file.is_index(filepath) and pagedata.list ~= false then
+ pagedata.list = file.get_collection(filepath, contentdir)
+
+ print(inspect(file.get_collection(filepath, contentdir)))
end
+
-- Archives
- if pagemeta.archives then
- pagemeta.archives_children = list.get_archives(contentdir)
+ if pagedata.archives then
+ pagedata.archives_children = list.get_archives(contentdir)
end
-- Tags
- if pagemeta.tags then
- pagemeta.tags_children = list.get_tags(contentdir)
+ if pagedata.tags then
+ pagedata.tags_children = list.get_tags(contentdir)
end
-- Change the language for a specific content
- pagemeta.language = pagemeta.language or config.language
+ pagedata.language = pagedata.language or config.language
-- Templates
- pagemeta.template = pagemeta.template or pagemeta.posttype or 'default'
- pagemeta.layout = pagemeta.layout or 'layout'
- pagemeta.head = pagemeta.head or 'head'
- pagemeta.navigation = pagemeta.navigation or 'navigation'
- pagemeta.footer = pagemeta.footer or 'footer'
- pagemeta.feed = pagemeta.feed or 'feed.xml'
+ pagedata.template = pagedata.template or pagedata.posttype or 'default'
+ pagedata.layout = pagedata.layout or 'layout'
+ pagedata.head = pagedata.head or 'head'
+ pagedata.navigation = pagedata.navigation or 'navigation'
+ pagedata.footer = pagedata.footer or 'footer'
+ pagedata.feed = pagedata.feed or 'feed.xml'
-- Include a partial template and compile it
-- @usage <%- include("test-partial") %>
- pagemeta.include = function(templatename)
- local inc = etlua.compile(file.read(template.find(config.templates, templatename)))
+ pagedata.include = function(templatename)
+ local inc = etlua.compile(file.read(template.find(templates, templatename)))
- return inc(lume.extend({}, config, pagemeta))
+ return inc(lume.extend({}, config, pagedata))
end
- return lume.extend({}, config, pagemeta)
+ return lume.extend({}, config, pagedata, {templates = templates})
end
return model