Module:If in page
MyWikiBiz, Author Your Legacy — Tuesday November 12, 2024
Jump to navigationJump to searchTemplate:Module rating This template implements {{If in page}}, please see its documentation for more information.
Usage
{{#invoke:If in page|main}}
local p = {} local getArgs = require('Module:Arguments').getArgs --args: 1 - ustring pattern, 2 - value if present, 3 - value if absent, -- page - page to test if not this page function p._main(args) if not args["page"] then args.page = mw.title.getCurrentTitle().fullText end local page = mw.title.new(args.page) if not page then --bad title return args["3"] or "" end local content = page:getContent() if not content then --page does not exist return args["3"] or "" end if mw.ustring.match(content, args["1"] or "") then if args["sub"] then --return value should have capture groups substed in local pattern = args["1"] or "" if mw.ustring.sub(pattern, 1, 1) ~= "^" then --pattern does not force it to be at start of page pattern = "^.-" .. pattern end if mw.ustring.sub(pattern, -1) ~= "$" then --pattern does not force it to be at end of page pattern = pattern .. ".*$" end --pattern will now match entire content, so running gsub will --return the string that has been passed in parameter 2 with things --like %1 substituted, NOTE: %0 does not work in this local out = mw.ustring.gsub(content, pattern, args["2"] or "") return out else return args["2"] or "" end else return args["3"] or "" end end function p.main(frame) local args = getArgs(frame) return p._main(args) end return p