Module:citations

local export = {}

local m_lang = require("Module:languages") local link = require("Module:links").full_link local serial_comma_join = require("Module:table").serialCommaJoin local format_categories = require("Module:utilities").format_categories local process = require("Module:parameters").process

local function make_header(terms, lang, full_name, sc, context) local term_links = {} for i,term in ipairs(terms) do		term_links[i] = link({term = term, lang = lang, sc = sc}, "term") end return ' ' .. full_name .. " citations of " .. serial_comma_join(term_links) .. (context and ", in context of " .. context .. "" or "") .. " " end

-- If the term is a valid pagename and there isn't an entry for it, -- return a category. local function is_undefined(term) local success, title = pcall(mw.title.new, term) if success and title then local existence success, existence = pcall(function return title.exists end) if success and not existence then return true end end return false end

function export.make_header_and_categories(frame) local title		= mw.title.getCurrentTitle local namespace = title.nsText local baseText	= title.baseText

local parent_args = frame:getParent.args local compat = parent_args["lang"]

local params = { [compat and "lang" or 1] = { required = true }, [compat and 1 or 2] = { list = true, default = baseText }, lang2 = {}, sc = {}, ct = {}, -- context sort = {}, }	local args = process(parent_args, params) local lang_code = compat or args[1] local lang = m_lang.getByCode(lang_code) or m_lang.err(lang_code, "lang") local full_name = lang:getFullName if args.lang2 then require("Module:debug").track("citations/lang2") end local sc = args.sc	sc = sc and require("Module:scripts").getByCode(sc) local terms = args[compat and 1 or 2] local context = args.ct	local text = {} table.insert(text, make_header(terms, lang, full_name, sc, context)) if namespace == "Citations" then if args.sort then table.insert(text, "") end for _, term in ipairs(terms) do			if is_undefined(term) then table.insert(text, "") break end end if terms[2] then table.insert(text, "") end -- "true" to force output in Citations namespace, where Module:utilities -- may not continue to add categories. table.insert(text, format_categories({full_name .. " citations"}, lang, args.sort, nil, true)) end text = table.concat(text) if compat then text = frame:expandTemplate{ title = "check deprecated lang param usage", args = {text, lang = lang_code} }	end return text end

return export