Module:CitationLite: Difference between revisions

From Chalo Chatu, Zambia online encyclopedia
Created page with "-- Module:CitationLite -- Lightweight citation renderer for Chalo Chatu -- Supports: cite_web, cite_news, cite_book, cite_journal -- Design goals: simple, robust, no complex date parsing, no heavy dependencies. local p = {} -- ========== Utilities ========== local function trim(s) if type(s) ~= "string" then return s end return (s:gsub("^%s+", ""):gsub("%s+$", "")) end local function isempty(v) if v == nil then return true end if type(v) == "string" then return tr..."
 
No edit summary
Line 116: Line 116:
if not text:match("%.%s*$") then text = text .. "." end
if not text:match("%.%s*$") then text = text .. "." end
return text
return text
end
-- New: safe prefix helper to avoid nil concatenation
local function prefixed(prefix, v)
if isempty(v) then return nil end
return prefix .. tostring(v)
end
end


Line 128: Line 134:
local date    = args.date or args["publication-date"]
local date    = args.date or args["publication-date"]
local urlblk  = render_url_block(args.url, args["archive-url"], args["archive-date"], args["url-status"])
local urlblk  = render_url_block(args.url, args["archive-url"], args["archive-date"], args["url-status"])
local access  = isempty(args["access-date"]) and nil or ("Accessed " .. args["access-date"])
local access  = prefixed("Accessed ", args["access-date"])
local lang    = render_lang(args.language or args.lang)
local lang    = render_lang(args.language or args.lang)
local quote    = isempty(args.quote) and nil or ("“" .. args.quote .. "”")
local quote    = isempty(args.quote) and nil or ("“" .. args.quote .. "”")
Line 156: Line 162:
local pages    = args.pages or args.page
local pages    = args.pages or args.page
local urlblk  = render_url_block(args.url, args["archive-url"], args["archive-date"], args["url-status"])
local urlblk  = render_url_block(args.url, args["archive-url"], args["archive-date"], args["url-status"])
local access  = isempty(args["access-date"]) and nil or ("Accessed " .. args["access-date"])
local access  = prefixed("Accessed ", args["access-date"])
local lang    = render_lang(args.language or args.lang)
local lang    = render_lang(args.language or args.lang)


Line 192: Line 198:
local doi      = isempty(args.doi) and nil or ("doi:" .. args.doi)
local doi      = isempty(args.doi) and nil or ("doi:" .. args.doi)
local urlblk  = render_url_block(args.url, args["archive-url"], args["archive-date"], args["url-status"])
local urlblk  = render_url_block(args.url, args["archive-url"], args["archive-date"], args["url-status"])
local access  = isempty(args["access-date"]) and nil or ("Accessed " .. args["access-date"])
local access  = prefixed("Accessed ", args["access-date"])
local lang    = render_lang(args.language or args.lang)
local lang    = render_lang(args.language or args.lang)