Template:$/doc

This is an old revision of this page, as edited by Alex (talk | contribs) at 00:13, 17 October 2024 (Created page with "{{Documentation}} This template converts all provided template params and template values into key/value pairs, which it then passes through as a single json-style string: <pre>{{$|param1=value|foo=bar|example=great}}</pre> {{$|param1=value|foo=bar|example=great}} ==Example== As an example, imagine a "Template:BigTable" which calls an associated "Module:BigTable": <syntaxhighlight> {{BigTable |{{$|metal1=bronze|metal2=iron|metal3=steel}} |{{$|metal1=mithril|metal2=ad..."). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
This is a documentation subpage for Template:$.
It contains usage information, categories, and other content that is not part of the original template page.
Template:$ invokes function serialize in Module:$ using Lua.

This template converts all provided template params and template values into key/value pairs, which it then passes through as a single json-style string:

{{$|param1=value|foo=bar|example=great}}

{"param1":"value","example":"great","foo":"bar"}

Example

As an example, imagine a "Template:BigTable" which calls an associated "Module:BigTable":

{{BigTable
|{{$|metal1=bronze|metal2=iron|metal3=steel}}
|{{$|metal1=mithril|metal2=adamant|metal3=rune}}
}}

Template:$ serializes the information inside of it into a string of key/value pairs, effectively converting the information to this style as it passes through into Template:BigTable:

{{BigTable
|{"metal1":"bronze","metal2":"iron","metal3":"steel"}
|{"metal1":"mithril","metal2":"adamant","metal3":"rune"}
}}

To access the information in the json params, the module uses the deserialize command from Module:$ on the parameters. This converts the json strings into json objects with standard key/value pairs. The deserialize command leaves normal template params unchanged:

local ds = require('Module:$').deserialize
local p = {}

function p._main(args)
	local secondmetalfromfirstparam = args[1]['metal2']
	local thirdmetalfromsecondparam = args[2]['metal3']
end

function p.main(frame)
	local args = ds(frame:getParent().args)
	return p._main(args)
end

return p