Module:NAQ content block

local p = {} --p stands for package

--[=[ Return a formatted block of contents of the format suitable for Notes and Queries.

Basically, this is just a list of em-dash-separated links, which are given one per line:

Link -> NaQ/Series S/Volume V/Number NNN/Link Link\Display -> Display Link, 123 -> NaQ/Series S/Volume V/Number NNN/Link, 123

Series, Volume and Number are params #1, 2, 3

Parm 4 is an optional prefix which will be unlinked. Often "NOTES:" or similar.

Formatting is not applied - this is done in the template. ]=] function p.content_links( frame )

local link_prefix = "Notes and Queries/Series " .. frame.args[1] .. "/Volume " .. frame.args[2] .. "/Number " .. frame.args[3] -- the parts of the page title local parts = mw.text.split( frame.args['content'], "\n", true ) -- collected links for each parent local links = {} -- count forwards from the highest level to the second-lowest -- (the lowest level is the current page, not a parent) for k, v in pairs(parts) do       -- first, any page suffixes can come out, we don't need them in the link local content, unlinked_suffix = mw.ustring.match(v, "(.*)%s+(%d+%p?)$" )

if content == nil then content = v   	  unlinked_suffix = "" end local display_text local link_target -- then, check if we have a link\display pair local disp_parts = mw.text.split(content, "\\", true) if #disp_parts < 2 then link_target = content display_text = content else link_target = disp_parts[1] display_text = disp_parts[2] end -- don't include trailing commas or full stops in link targets link_target = mw.ustring.gsub(link_target, "[%.,](%p?)$", "%1") link = "" .. display_text .. "" if unlinked_suffix ~= nil and unlinked_suffix ~= "" then link = link .. " " .. unlinked_suffix end

table.insert(links, link) end -- build up the final output local ret = "" if frame.args[4] ~= nil and frame.args[4] ~= "" then ret = ret .. frame.args[4] .. "—"	end ret = ret .. table.concat(links, "—") return ret end

return p