Module:CitationLite: Difference between revisions
From Chalo Chatu, Zambia online encyclopedia
Chalochatu (talk | contribs) 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..." |
Chalochatu (talk | contribs) 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 = | 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 = | 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 = | 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) | ||