Open main menu
Home
Random
Donate
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Sandbox/Wnt/WikiLink
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local p = {} function proc(text,fcn,args) -- processes text sequentially according to a list of functions separated by spaces fcn text=text or "" fcn=fcn or "" local keepfile repeat fcnext=mw.ustring.match(fcn,"(%S+)") if fcnext then fcn=mw.ustring.gsub(fcn,fcnext,"") -- function names SHALL not contain pattern chars if fcnext=="dewiki" then -- protect all single [ and ] by temporarily converting to a password. This allows links to remain inside file text while doing only a dewiki text=mw.ustring.gsub(text,"([^%[])%[([^%[])","%1<Module:WikiLink internal lsbracket token>%2") text=mw.ustring.gsub(text,"^%[([^%[])","<Module:WikiLink internal lsbracket token>%1") text=mw.ustring.gsub(text,"([^%[])%[$","%1<Module:WikiLink internal lsbracket token>") text=mw.ustring.gsub(text,"([^%]])%]([^%]])","%1<Module:WikiLink internal rsbracket token>%2") text=mw.ustring.gsub(text,"^%]([^%]])","<Module:WikiLink internal rsbracket token>%1") text=mw.ustring.gsub(text,"([^%]])%]$","%1<Module:WikiLink internal rsbracket token>") if keepfile then text=mw.ustring.gsub(text,"%[%[%s*File:([^%[%]])%]%]","<Module:WikiLink internal filestart token>%1<Module:WikiLink internal 2rsbracket token>") text=mw.ustring.gsub(text,"%[%[%s*Image:([^%[%]])%]%]","<Module:WikiLink internal imagestart token>%1<Module:WikiLink internal 2rsbracket token>") end -- process File: and Image: links, using alt text when available text=mw.ustring.gsub(text,"%[%[File:[^%[%]]-|%s*alt=([^%[%]|]-)|[^%[%]]-%]%]","%1") -- case for File: where alt= text is present but not at end text=mw.ustring.gsub(text,"%[%[Image:[^%[%]]-|%s*alt=([^%[%]|]-)|[^%[%]]-%]%]","%1") -- case for Image: where alt= text is present but not at end text=mw.ustring.gsub(text,"%[%[File:[^%[%]]-|%s*alt=([^%[%]|]-)%]%]","%1") -- case for File: where alt= text is present at end text=mw.ustring.gsub(text,"%[%[Image:[^%[%]]-|%s*alt=([^%[%]|]-)%]%]","%1") -- case for Image: where alt= text is present at end text=mw.ustring.gsub(text,"%[%[[^%[%]]-|([^%[%]|]-)%]%]","%1") -- link, text separated by "|". Handles case of File: when no alt= is specified, -assuming- last field is the legend text=mw.ustring.gsub(text,"%[%[([^%[%]|]-)%]%]","%1") -- link with no funny |s at all -- deprotect all tokens text=mw.ustring.gsub(text,"<Module:WikiLink internal lsbracket token>","[") text=mw.ustring.gsub(text,"<Module:WikiLink internal rsbracket token>","]") text=mw.ustring.gsub(text,"<Module:WikiLink internal filestart token>","[[File:") text=mw.ustring.gsub(text,"<Module:WikiLink internal imagestart token>","[[Image:") text=mw.ustring.gsub(text,"<Module:WikiLink internal 2rsbracket token>","]]") elseif fcnext=="delink" then text=mw.ustring.gsub(text,"%[%s*http://%S*%s+([^%]%[]+)%]","%1") elseif fcnext=="wikiall" then if args.space then text=mw.ustring.gsub(text, "([^ %p]) ", "%1#spacetoken#") text=mw.ustring.gsub(text,"(%S+)","[[%1]]") text=mw.ustring.gsub(text, "(%S)#spacetoken#(%S)", "%1 %2") else text=mw.ustring.gsub(text,"(%S+)","[[%1]]") end elseif fcnext=="wikiline" then text=mw.ustring.gsub(text,"([^\n]+)","[[%1]]") elseif fcnext=="keepfile" then keepfile=true end -- if fcnext==etc. if args.external then text = mw.ustring.gsub(text,"%[%[([^%[%]]*)%]%]", function(x) return "[" .. args.external .. mw.ustring.gsub(mw.text.encode(x)," ","_") .. " " .. x .. "]" end) end end -- if fcnext until not fcnext return text --- when all functions are used up (or no valid function given) return the input text straight end function p.main(frame,fcn) -- gets the parameters and sets up to call proc local args=frame.args local parent=frame.getParent(frame) if parent then pargs=parent.args else pargs={} end local text=args.text or args[1] or pargs.text or pargs[1] or "" local nowiki=args.nowiki or pargs.nowiki fcn=(fcn or "") .. (args["function"] or pargs["function"] or "") --local page=mw.title.getCurrentTitle() --- in the long run this cheesy tactic won't fly - I should rewrite as a proper module and recommend Module:Page invocation in the #invoke instead. --if page then text=page.getContent(page) else return "error didn't get the page contents :(" end text=proc(text,fcn,args) if nowiki then text="<nowiki>" .. text .. "</nowiki>" end return frame:preprocess(text) end --- the function "parameter" is added to the beginning of the list of functions to be performed as specified by "function =". function p.dewiki(frame) return p.main(frame,"dewiki ") end function p.delink(frame) return p.main(frame,"delink ") end function p.wikiall(frame) return p.main(frame,"wikiall ") end function p.wikiline(frame) return p.main(frame,"wikiline ") end function p.keepfile(frame) return p.main(frame,"keepfile ") end function p.keepfile_dewiki(frame) return p.main(frame,"keepfile dewiki") end return p
Summary:
Please note that all contributions to Stockhub may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Module other
(
edit
)
Template:Module rating
(
edit
)
Template:Ombox
(
edit
)
Module:Arguments
(
edit
)
Module:Message box
(
edit
)
Module:Message box/configuration
(
edit
)
Module:Message box/ombox.css
(
edit
)
Module:Sandbox/Wnt/WikiLink/doc
(
edit
)
Module:Yesno
(
edit
)