BackgroundEdit

Eventually I want the loose equivalent of a {{xsign}} for all the different special-link-templates I use (I tend to avoid the external link syntax). The end goal is to be able to say something like Template:Tlc, and depending on the pattern the URL matches it would emit wikitext (assuming substitution works out well—I wouldn't be surprised if it's impossible) for either {{diff2}}, {{diff4}}, {{oldid}}, and others as time goes on.

Small shorter-term TODO:

  • Actually learn how substitution depth works and all that jazz. (See Template:Diff2, which was from substituting the #invoke call.)
  • Given [DiffURL label], emit {{diff2|id|label}}
  • Given [DiffURL#section label], emit {{diff2|id|section|label}}
  • Have a less-strict match (e.g., URL param order) for diff-urls with oldid=prev.
  • Switch to {{diff4}} if a numerical value for oldid is present.
    • And also check if that template or its docs needs fixing, because every time I use it I get the parameters backwards...

Longer-term TODO:

  • A lot.



local p = {}
local prevDiffStart = "https://en%.wikipedia%.org/w/index%.php%?title=.-&diff=prev&"

function p.xlink(frame)
	-- https://en.wikipedia.org/w/index.php?title=User_talk:Perryprog&diff=prev&oldid=999347924&diffmode=source
	-- Should become {{diff2|999347924}}
	local match = string.match(frame.args[1], prevDiffStart .. "oldid=(%d+)")
	return frame:expandTemplate({title = "Diff2", args = {match}})
end

return p