local p = ;require('strict')
local function makelink(link) return "
local function warning(note) return "
local function removeword(link,removelist) for i,remove in ipairs(removelist) do local char1 = string.sub(remove,1,1) local regex = "%f[%w][" .. string.upper(char1) .. string.lower(char1) .. "]" .. string.sub(remove,2) .. "*%f[%W]" link = link:gsub(regex,"") end link = link:gsub("^%s*","") -- strip spaces from start link = link:gsub("%s*$","") -- strip spaces from end link = link:gsub("^(%l)", mw.ustring.upper) -- capitalise first letter return linkend
function p.getlinks(frame) local args = frame.args local pargs = frame:getParent.args local qids = args[1] or pargs[1] local sort = true -- sort entries unless sort=no if args.sort
'no' then sort = false end local redlinks = false -- do not show redlinks unless redlinks=yes if args.redlinks
'yes' then redlinks = true end local removes = args.remove or pargs.remove or "" local removelist = mw.text.split(removes,"%s*,%s*") -- split string into table at commas local links = -- for constructing the links local notes = "" -- for warning messages on the template if qids then for qid in qids:gmatch("Q%d+") do local target = mw.wikibase.sitelink(qid) local label = mw.wikibase.getLabel(qid) if target then -- sitelink to enwiki exists local newlink = newlink.target = target if label then -- make piped link using English label to avoid unnecessary disambiguation terms newlink.label = removeword(label,removelist) -- remove common words from label else -- there is no label so we are using target as the label newlink.label = removeword(target,removelist) -- remove common words from target end table.insert(links,newlink) else -- no sitelink to enwiki exists yet if label then -- English label exists if redlinks
true then -- add warning on template that no redlink can be generated without label notes = notes..warning("Cannot show link to "..qid.." because no label is defined") else -- add warning on template that there is no sitelink available notes = notes..warning("No sitelink for "..qid.."") end else -- add warning on template that qid is invalid notes = notes..warning("Invalid identifier "..qid) end end end end else return "Error: no parameter" end local links2 = -- will contain wikilinks sorted alphabetically if #links>0 then if sort then table.sort(links,function (link1,link2) return link1.label
function p.convert(frame) local args = frame.args local pargs = frame:getParent.args local input = args[1] or pargs[1] if input
return p