Toggle menu
14
229
69
27.1K
Kenshi Wiki
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
Revision as of 03:12, 18 February 2025 by Prd (talk | contribs) (Created page with "require('strict') local p = {} function p.main(frame) local parent = frame:getParent() if parent and parent:getTitle():gsub('/sandbox$', '') == 'Template:Call wikitext' then -- Treat the "Template:Call wikitext" frame as the current frame frame = parent end local code = frame.args['sourceCode'] or error("sourceCode arg not provided") code = mw.text.unstripNoWiki(code) -- Undo nowiki sanitization code = code:gsub("<", "<"):gsub(">", ">") -- Unsanitize...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Implements {{Call wikitext}}. This module was originally designed for providing an effective way to create testcases for Module:ArgRest, by "mocking" a transcluded template.

Usage

This module can also be used directly. See Template:Call wikitext/doc for documentation and replace {{Call wikitext with {{#invoke:Call wikitext|main. For example:

  • {{Call wikitext|sourceCode=<nowiki>{{{foo}}}</nowiki>|foo=Hello!}} → Hello!
  • {{#invoke:Call wikitext|main|sourceCode=<nowiki>{{{foo}}}</nowiki>|foo=Hello!}} → Hello!

require('strict')
local p = {}

function p.main(frame)
	local parent = frame:getParent()
	if parent and parent:getTitle():gsub('/sandbox$', '') == 'Template:Call wikitext' then
		-- Treat the "Template:Call wikitext" frame as the current frame
		frame = parent
	end

	local code = frame.args['sourceCode'] or error("sourceCode arg not provided")
	
	code = mw.text.unstripNoWiki(code) -- Undo nowiki sanitization
	code = code:gsub("&lt;", "<"):gsub("&gt;", ">") -- Unsanitize < and >
	
	-- Remove sourceCode from the arguments
	local newArgs = {}
	for k, v in pairs(frame.args) do
		if k ~= 'sourceCode' then
			newArgs[k] = v
		end
	end
	
	-- Create a new frame without "sourceCode"
	local newFrame = frame:newChild{
		title = "Called wikitext",
		args = newArgs
	}

    return newFrame:preprocess(code)
end

return p
Contents