local M = {} M.proto = "http" local function isHttp() return M.proto == "http" end local function isGemini() return M.proto == "gemini" end local function esc(s) s = s or "" s = s:gsub("&", "&") s = s:gsub("<", "<") s = s:gsub(">", ">") return s end M.p = function(s) s = s or "" if isHttp() then return "
" .. esc(s) .. "
" elseif isGemini() then return s end end M.h = function(level, s) level = tonumber(level) or 1 if level < 1 then level = 1 end if level > 6 then level = 6 end s = s or "" if isHttp() then return "" .. esc(s) .. ""
elseif isGemini() then
return "```\n" .. s .. "\n```"
end
end
M.inline = function(s)
s = s or ""
if isHttp() then
return "" .. esc(s) .. ""
elseif isGemini() then
return "`" .. s .. "`"
end
end
M.link = function(text, url)
text = text or ""
url = url or ""
if isHttp() then
return "" .. esc(text) .. ""
elseif isGemini() then
return "=> " .. url .. " " .. text
end
end
M.list = function(items, ordered)
items = items or {}
if isHttp() then
local tag = ordered and "ol" or "ul"
local out = "<" .. tag .. ">"
for _, v in ipairs(items) do
out = out .. "" .. esc(s) .. "" elseif isGemini() then return "> " .. s end end M.rule = function() if isHttp() then return "