satelito

Static [web] site (or page) generator (ssg) made with Lua script.
git clone git://soucy.cc/satelito.git
Log | Files | Refs | README

commit 9b46848c02746de7cc8bd24a6746f53d4832e2e9
parent 9d2d1693f8cf4f796641827c22f9f196e7e2a3d5
Author: Hugo Soucy <hugo@soucy.cc>
Date:   Sun, 27 Nov 2022 08:08:47 -0500

Rename pagemeta to pagedata

Diffstat:
Msatelito/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