--- This module extracts all the users in either a marked LST or in wikitext and-- generates links reflecting a courtesy ping.-- -- @module Courtesy ping-- @require Module:Arguments-- @release alpha
local p = local getArgs = require("Module:Arguments").getArgs
--- Makes a user link-- @param userTitle the title for the user object-- @return the formatted user link in the form of a pingfunction makeUserLink(userTitle) return mw.ustring.format('@%s', userTitle.prefixedText, userTitle.text)end
--- Entry point for module-- @param frame processing frame-- @return wikitextfunction p.main(frame) local args = getArgs(frame) return p._main(args, frame)end
function p._main(args, frame) frame = frame or mw.getCurrentFrame if not mw.isSubsting and not args['__demo'] then error(" must be substituted") end local links = local noPing = local i = 1 while args["noping" .. i] do noPing[args[ "noping" .. i ] ] = true i = i + 1 end local wikitext = args['wikitext'] or args[1] or nil local pageToInclude = args['title'] or local lstTitle = mw.title.new(pageToInclude) if not wikitext and lstTitle then if lstTitle.fragment and lstTitle.fragment ~= then wikitext = frame:callParserFunction('#lsth',) else wikitext = frame:preprocess(lstTitle:getContent) end elseif not wikitext then error("Wikitext or a page title with section must be specified!") end mw.log(wikitext) -- Thanks ChatGPT for link, display in mw.ustring.gmatch(wikitext, "%[%[([^%[%]|]+)%|?([^%[%]]*)%]%]") do mw.logObject if display
'|' then -- toProcess = mw.ustring.sub(toProcess, 0, -- mw.ustring.len(toProcess) - 1) -- trimmed = true -- inPipedLink = true -- inWikiLink = false -- end -- end -- if not inWikiLink and not inPipedLink then -- trimmed = false -- if wikitextArray[k ]
'[' -- then -- toProcess = '' -- inWikiLink = true -- end -- else -- if wikitextArray[ k ]
']' -- then -- if not trimmed then -- toProcess = mw.ustring.sub(toProcess, 0, -- mw.ustring.len(toProcess) - 2) -- trimmed = true -- end -- links[toProcess ] = mw.title.new(toProcess) -- toProcess = -- inWikiLink = false -- inPipedLink = false -- end -- end -- end -- end mw.logObject(links) local out = for k,v in pairs(links) do mw.logObject(v) if v ~= nil then if v.namespace
return p