menu menu_open
  • edit Edit

    Navigation

    • Main page
    • All pages
    • Recent changes
    • Random page
    • Help

    Tools

    • What links here
    • Related changes
    • Special pages
    • Printable version
    • Permanent link
    • Page information

    Variants

The Lab Rats 2 - Reformulate Wiki

Module:Unsubst

14 article Pages
18 photo Files
2128 edit Edits
22 person Users
timeline photo_library leaderboard file_upload
palette
  • computer
code
  • computer
pages api security app_shortcut
more_vertical
  • timeline Recent changes
  • photo_library New Files
  • leaderboard Statistics
  • file_upload Upload file
  • palette CSS expand_more
    • computer
  • code JS expand_more
    • computer
  • pages All pages
  • apisandbox API sandbox
  • security System messages
  • app_shortcut Special pages
grid_view double_arrow forum file_download extension file_upload visibility book category delete_sweep
settings
contrast

  • brightness_auto hdr_auto
  • brightness_7 brightness_1
  • brightness_6 brightness_2
  • brightness_5 brightness_3
  • brightness_4
  • brightness_3 brightness_5
  • brightness_2 brightness_6
  • brightness_1 brightness_7
hdr_auto
  • brightness_auto
  • hdr_auto
  • light_mode
  • dark_mode

  • palette
  • tonality

  • brightness_auto hdr_auto
  • gradient gradient
  • thermostat thermostat
  • ac_unit storm
  • Duo
  • Solo
format_paint
  • emergency deployed_code
  • emergency opacity
  • square
  • contrast

  • deployed_code build square contrast
  • 1
  • 2
  • 3
  • 4
palette
  • brightness_auto
  • hdr_auto
  • light_mode
  • dark_mode

  • build
  • emergency invert_colors_off
  • contrast
  • format_paint
  • android
  • colorize
colorize
  • brightness_auto
  • hdr_auto
  • bedtime_off
  • bedtime

  • build
  • square
  • computer
  • invert_colors
  • brush
  • filter_b_and_w
  • contrast
  • smart_toy
  • 1
  • 2
  • 3
  • 4
brush
  • A
  • B
  • C
  • D
  • E
  • F
  • G
  • H
  • Welcome to the Lab Rats 2 - Reformulate Wiki.
  • Stay tuned here for news and changes...
  • This wiki is currently being built. Feel free to contribute to it and discuss any suggestions or changes.
  • Visit the Lab Rats 2 Discord to discuss any missing information!
  • Module
  • Discussion
  • Read
  • View source
  • View history

Module:Unsubst

From The Lab Rats 2 - Reformulate Wiki
Revision as of 04:32, 27 December 2021 by Cooperdk (talk | contribs) (1 revision imported: Imported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Template:Error

ProtectedThis module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing.

Helper module to facilitate a substituted template transform into a template transclusion.

Maintenance templates, such as {{Citation needed}} or {{Refimprove}}, should never be substituted. A trick to avoid that is to make a template substitute to its transcluded form.

Infoboxes should use Module:Unsubst-infobox, as should any other templates with parameters listed in block format by default.

Usage

To turn a template into a self-substituting template, wrap the existing template code with:

{{SAFESUBST:<noinclude />#invoke:Unsubst||$B=

 [ ... existing template code ... ]

}}

The wikitext to display when not substed must be given as "$B". All other parameters passed to the #invoke will be copied to the generated template invocation as default values. If the value of any of these default parameters is __DATE__, that value in the generated template invocation will be the current month and year.

Some templates have a ‎<noinclude> but no matching ‎</noinclude> at the end of the template. In such cases the missing ‎</noinclude> must be added before the ending }}.

Advanced

{{SAFESUBST:<noinclude />#invoke:Unsubst||$params=[ parameters ]|$aliases=[ aliases ]|$flags=[ flags ]|$B=

 [ ... existing template code ... ]

}}

Due to Lua limitations, parameters are normally ordered randomly when the template is substituted. |$params= can be used in #invoke:Unsubst to list template parameters in order, comma-separated (e.g. egg,bacon,sausage,cheese,spam). Numbered parameters should be before others in the list. Any remaining parameters are tacked onto the end of the generated invocation.

Parameter aliases can be listed in |$aliases= (and shouldn't be listed in |$params=), and will be replaced automatically. Each alias and its replacement should be formatted as alias>replacement, and each of those pairs should be comma-separated (e.g. œuf>egg,melt>cheese). Note that this parameter can function with or without |$params=.

Parameter |$flags= can be used to modify other facets of the module's behaviour; entries are comma-separated. Valid flags are override (allows parameters in the #invoke: to take precedence over parameters in the original template invocation); keep-whitespace (prevents whitespace from being trimmed from unnamed parameters); and remove-empty (removes empty parameters).

These parameters can be manipulated using parser functions to provide more complicated options (note that in the parameters any parser function, or template or module invocation, should also have SAFESUBST:<noinclude />).

Parameter |$template-name= will override the subst'd templates name with the template name assigned to this parameter.

Example

Consider a template Template:Example containing the following code:

{{SAFESUBST:<noinclude />#invoke:Unsubst||foo=bar |date=__DATE__ |$B=

 [ ... Template code goes here ... ]

}}
Original Result
{{subst:example}} {{Example|date=July 2025}}
{{subst:example|foo=X}} {{Example|foo=X|date=July 2025}}
{{subst:example|baz=X}} {{Example|baz=X|date=July 2025}}
{{subst:example|date=January 2001}} {{Example|foo=bar|date=January 2001}}



local checkType = require('libraryUtil').checkType

local p = {}

local BODY_PARAM = '$B'

local specialParams = {
	['$params'] = 'parameter list',
	['$aliases'] = 'parameter aliases',
	['$flags'] = 'flags',
	['$B'] = 'template content',
	['$template-name'] = 'template invocation name override',
}

function p.main(frame, body)
	-- If we are substing, this function returns a template invocation, and if
	-- not, it returns the template body. The template body can be specified in
	-- the body parameter, or in the template parameter defined in the
	-- BODY_PARAM variable. This function can be called from Lua or from
	-- #invoke.

	-- Return the template body if we aren't substing.
	if not mw.isSubsting() then
		if body ~= nil then
			return body
		elseif frame.args[BODY_PARAM] ~= nil then
			return frame.args[BODY_PARAM]
		else
			error(string.format(
				"no template content specified (use parameter '%s' from #invoke)",
				BODY_PARAM
			), 2)
		end
	end

	-- Sanity check for the frame object.
	if type(frame) ~= 'table'
		or type(frame.getParent) ~= 'function'
		or not frame:getParent()
	then
		error(
			"argument #1 to 'main' must be a frame object with a parent " ..
			"frame available",
			2
		)
	end

	-- Find the invocation name.
	local mTemplateInvocation = require('Module:Template invocation')
	local name

	if frame.args['$template-name'] and '' ~= frame.args['$template-name'] then
		name = frame.args['$template-name']										-- override whatever the template name is with this name
	else
		name = mTemplateInvocation.name(frame:getParent():getTitle())
	end

	-- Combine passed args with passed defaults
	local args = {}
	if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*override%s*,' ) then
		for k, v in pairs( frame:getParent().args ) do
			args[k] = v
		end
		for k, v in pairs( frame.args ) do
			if not specialParams[k] then
				if v == '__DATE__' then
					v = mw.getContentLanguage():formatDate( 'F Y' )
				end
				args[k] = v
			end
		end
	else
		for k, v in pairs( frame.args ) do
			if not specialParams[k] then
				if v == '__DATE__' then
					v = mw.getContentLanguage():formatDate( 'F Y' )
				end
				args[k] = v
			end
		end
		for k, v in pairs( frame:getParent().args ) do
			args[k] = v
		end
	end

	-- Trim parameters, if not specified otherwise
	if not string.find( ','..(frame.args['$flags'] or '')..',', ',%s*keep%-whitespace%s*,' ) then
		for k, v in pairs( args ) do args[k] = mw.ustring.match(v, '^%s*(.*)%s*$') or '' end
	end

	-- Pull information from parameter aliases
	local aliases = {}
	if frame.args['$aliases'] then
		local list = mw.text.split( frame.args['$aliases'], '%s*,%s*' )
		for k, v in ipairs( list ) do
			local tmp = mw.text.split( v, '%s*>%s*' )
			aliases[tonumber(mw.ustring.match(tmp[1], '^[1-9][0-9]*$')) or tmp[1]] = ((tonumber(mw.ustring.match(tmp[2], '^[1-9][0-9]*$'))) or tmp[2])
		end
	end
	for k, v in pairs( aliases ) do
		if args[k] and ( not args[v] or args[v] == '' ) then
			args[v] = args[k]
		end
		args[k] = nil
	end

	-- Remove empty parameters, if specified
	if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*remove%-empty%s*,' ) then
		local tmp = 0
		for k, v in ipairs( args ) do
			if v ~= '' or ( args[k+1] and args[k+1] ~= '' ) or ( args[k+2] and args[k+2] ~= '' ) then
				tmp = k
			else
				break
			end
		end
		for k, v in pairs( args ) do
			if v == '' then
				if not (type(k) == 'number' and k < tmp) then args[k] = nil end
			end
		end
	end

	-- Order parameters
	if frame.args['$params'] then
		local params, tmp = mw.text.split( frame.args['$params'], '%s*,%s*' ), {}
		for k, v in ipairs(params) do
			v = tonumber(mw.ustring.match(v, '^[1-9][0-9]*$')) or v
			if args[v] then tmp[v], args[v] = args[v], nil end
		end
		for k, v in pairs(args) do tmp[k], args[k] = args[k], nil end
		args = tmp
	end

	return mTemplateInvocation.invocation(name, args)
end

p[''] = p.main -- For backwards compatibility

return p
Retrieved from "https://lr2wiki.porn-organizer.org/index.php?title=Module:Unsubst&oldid=850"
Category:
  • Modules subject to page protection
Hidden category:
  • Heavily used templates
  • Privacy policy
  • About The Lab Rats 2 - Reformulate Wiki
  • Disclaimers
    • This page was last edited on 27 December 2021, at 04:32.
    • Content is available under Creative Commons Attribution-ShareAlike unless otherwise noted.
    • Creative Commons Attribution-ShareAlike
    • Powered by MediaWiki

    timeline Recent changes
    arrow_forward_ios

    No changes during the given period match these criteria.

    info About The Lab Rats 2 - Reformulate Wiki
    edit

    The wiki for the adult sandbox game Lab Rabs 2 - Reformulate

    search saved_search
    search saved_search Search
    apps
    • live_help
    • hive
    • insert_link
    • timeline
    • visibility
    • shuffle
    • build
    • help
    • file_download
    • attachment
    public_off Not logged inReady
    widgets
    public StandardReady
    hive MirahezeReady
    Qora QoreReady
    • Privacy policy
    • About The Lab Rats 2 - Reformulate Wiki
    • Disclaimers
    insert_link timeline visibility shuffle build help file_download attachment
    account_circle
    • refresh

    • Create account
    • Log in
    refresh