Software / code / prosody-modules
File
mod_pubsub_forgejo/format.lib.lua @ 6319:63ef69b2f046
mod_http_oauth2: Assume Prosody 13.0+ roles are available
Per the README, 0.12 is not supported, so we should not need to worry
about this. Plus it is assumed to be present elsewhere and that would
throw errors.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 02 Jul 2025 16:15:32 +0200 |
| parent | 6203:131b8bfbefb4 |
line wrap: on
line source
local st = require "util.stanza"; local datetime = require "util.datetime"; local function shorten(x) return string.sub(x, 1, -32) end local function firstline(x) return x:match("^[^\r\n]*") end local function branch(x) return string.sub(x, 12) end local function tag(x) return string.sub(x, 11) end local function noop(x) return x end local filters = { shorten = shorten, firstline = firstline, branch = branch, tag = tag } local render = require"util.interpolation".new("%b{}", noop, filters); local function get_item(data, templates) local function render_tpl(name) return render(templates[name], {data = data}) end local now = datetime.datetime() local id = render(templates["id"], {data = data}) -- LuaFormatter off return st.stanza("item", {id = id, xmlns = "http://jabber.org/protocol/pubsub"}) :tag("entry", {xmlns = "http://www.w3.org/2005/Atom"}) :tag("id"):text(id):up() :tag("title"):text(render_tpl("title")):up() :tag("content", {type = "text"}):text(render_tpl("content")):up() :tag("link", {rel = "alternate", href = render_tpl("link")}):up() :tag("published"):text(now):up() :tag("updated"):text(now):up() :tag("author") :tag("name") :text(data.sender.username):up() :tag("email"):text(data.sender.email) -- LuaFormatter on end return get_item