Bureaucrats, editor, Interface administrators, Administrators (Semantic MediaWiki), Curators (Semantic MediaWiki), Editors (Semantic MediaWiki), Administrators
47,390
edits
No edit summary Tag: Reverted |
No edit summary Tag: Manual revert |
||
Line 1:
{{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=adamant|metal3=rune}}
}}▼
</syntaxhighlight>
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:
<syntaxhighlight>
{{BigTable
|{"metal1":"bronze","metal2":"iron","metal3":"steel"}
|{"metal1":"mithril","metal2":"adamant","metal3":"rune"}
}}▼
</syntaxhighlight>
To access the information in the json params, the module uses the <code>deserialize</code> command from [[Module:$]] on the parameters. This converts the json strings into json objects with standard key/value pairs. The <code>deserialize</code> command leaves normal template params unchanged:
<syntaxhighlight lang="lua">
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
</syntaxhighlight>
▲}
▲}}
|