<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://open-csp.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ACspFunctions</id>
	<title>Module:CspFunctions - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://open-csp.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ACspFunctions"/>
	<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=Module:CspFunctions&amp;action=history"/>
	<updated>2026-04-29T20:41:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://open-csp.org/index.php?title=Module:CspFunctions&amp;diff=3809&amp;oldid=prev</id>
		<title>Maintenance script: Imported by PageSync</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=Module:CspFunctions&amp;diff=3809&amp;oldid=prev"/>
		<updated>2025-09-18T07:01:12Z</updated>

		<summary type="html">&lt;p&gt;Imported by PageSync&lt;/p&gt;
&lt;a href=&quot;https://open-csp.org/index.php?title=Module:CspFunctions&amp;amp;diff=3809&amp;amp;oldid=3527&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=Module:CspFunctions&amp;diff=3527&amp;oldid=prev</id>
		<title>Maintenance script: Imported by PageSync</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=Module:CspFunctions&amp;diff=3527&amp;oldid=prev"/>
		<updated>2025-07-15T08:37:13Z</updated>

		<summary type="html">&lt;p&gt;Imported by PageSync&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:37, 15 July 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l250&quot;&gt;Line 250:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 250:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;--[[&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;function p.nowiki(frame)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;This function applies mw.text.nowiki to input argument 1&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and returns it. Can be useful when you want to display text&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;that contains wikitext formatting characters without them&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;being processed.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Examples:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{#invoke:CspFunctions|nowiki|1= ==Example==}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{#invoke:CspFunctions|nowiki|This text contains a bullet list:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* item 1&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* item 2&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* item 3&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Note that when using unnamed parameters spaces and newlines will be included in the parameter value, for example:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;{{#invoke:CspFunctions|nowiki|A }}B&quot; produces the output &quot;A B&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;{{#invoke:CspFunctions|nowiki|1=A }}B&quot; produces the output &quot;AB&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;--]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;function p.nowiki(frame)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  if frame.args[1] == nil then &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    return &quot;&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  else &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    return mw.text.nowiki(frame.args[1])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  end&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;end&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;return p&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;return p&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;mw-diff-slot-header&quot; lang=&quot;en&quot;&gt;&lt;th colspan=&quot;4&quot;&gt;ws-base-props&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Base properties&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Class=Application page&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Title=Module:CspFunctions&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Version history={{Version history item &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Version number=1.2&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Version description=Added comment explaining potential issue with spaces when using nowiki function&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Version date=2024-10-18 07:15:17&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}{{Version history item &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Version number=1.1&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Version description=Added nowiki function for passing text containing wikitext links to FlexForm inputs&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Version date=2023-9-21 11:21:21&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}{{Version history item &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Version number=1.0&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Version description=Added function p.gmatch which can be used to replace uses of the #regexall parserfunction&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Version date=2023-8-18 12:38:53&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;mw-diff-slot-header&quot; lang=&quot;en&quot;&gt;&lt;th colspan=&quot;4&quot;&gt;ws-class-props&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Csp class properties&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Type=CSP Basis Core&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Origin=CSP Basis&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=Module:CspFunctions&amp;diff=2836&amp;oldid=prev</id>
		<title>Ebc16062-dd09-4928-8cf3-821f492b0c44: Created page with &quot;local p = {}  --[[ function p.getSlotData(page,slot)  This function returns a Lua table with structured content of the slot.  function arguments: - page (optional): pagename o...&quot;</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=Module:CspFunctions&amp;diff=2836&amp;oldid=prev"/>
		<updated>2023-09-01T07:53:19Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local p = {}  --[[ function p.getSlotData(page,slot)  This function returns a Lua table with structured content of the slot.  function arguments: - page (optional): pagename o...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
function p.getSlotData(page,slot)&lt;br /&gt;
&lt;br /&gt;
This function returns a Lua table with structured content of the slot.&lt;br /&gt;
&lt;br /&gt;
function arguments:&lt;br /&gt;
- page (optional): pagename of the page for which you want the slot content, defaults to current page&lt;br /&gt;
- slot (optional): slot of which you want the content, defaults to &amp;quot;main&amp;quot;&lt;br /&gt;
&lt;br /&gt;
debug console tests:&lt;br /&gt;
p.getSlotData() &lt;br /&gt;
p.getSlotData(&amp;#039;Wiki:Testpagina sidebar code&amp;#039;,&amp;#039;ws-data&amp;#039;) &lt;br /&gt;
p.getSlotData(&amp;#039;Template:Sidebar item&amp;#039;,&amp;#039;ws-class-props&amp;#039;) &lt;br /&gt;
--]]&lt;br /&gt;
function p.getSlotData(page,slot)&lt;br /&gt;
  	-- get page from function arguments or default to current page&lt;br /&gt;
  	if page == nil or page == &amp;#039;&amp;#039; then&lt;br /&gt;
    	page = mw.title.getCurrentTitle().fullText&lt;br /&gt;
    end&lt;br /&gt;
  	-- get slot from function arguments or default to main&lt;br /&gt;
  	if slot == nil or slot == &amp;#039;&amp;#039; then&lt;br /&gt;
    	slot = &amp;#039;main&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
    -- get data from the slot (works for both json and wikitext slots)&lt;br /&gt;
    local slotData = {}&lt;br /&gt;
    slotData = mw.slots.slotData(slot,page)&lt;br /&gt;
&lt;br /&gt;
    --mw.log(&amp;#039;slotData = .. &amp;#039;)&lt;br /&gt;
   	--mw.logObject(slotData)&lt;br /&gt;
    return slotData&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
function p.afExportSlots(frame)&lt;br /&gt;
&lt;br /&gt;
frame args:&lt;br /&gt;
slots 	(text)	comma-separated list of slots, defaults to &amp;quot;ws-class-props,ws-base-props,ws-data&amp;quot;&lt;br /&gt;
page 	(text)	defaults to current page&lt;br /&gt;
&lt;br /&gt;
{{#invoke:CspFunctions|afExportSlots}}&lt;br /&gt;
{{#invoke:CspFunctions|afExportSlots|page=Template:Sidebar item|slots=ws-base-props,ws-class-props}}&lt;br /&gt;
&lt;br /&gt;
debug console tests:&lt;br /&gt;
=p.afExportSlots(mw.getCurrentFrame():newChild{title=&amp;quot;whatever&amp;quot;,args={[&amp;quot;page&amp;quot;]=&amp;quot;Template:Sidebar item&amp;quot;,[&amp;quot;slots&amp;quot;]=&amp;quot;ws-base-props,ws-class-props&amp;quot;}}) &lt;br /&gt;
=p.afExportSlots(mw.getCurrentFrame():newChild{title=&amp;quot;whatever&amp;quot;,args={[&amp;quot;addClassDefinition&amp;quot;]=&amp;quot;&amp;quot;}}) &lt;br /&gt;
--]]&lt;br /&gt;
function p.afExportSlots(frame)&lt;br /&gt;
&lt;br /&gt;
-- get slots and page from frame args or set default value&lt;br /&gt;
local slots = frame.args[&amp;quot;slots&amp;quot;]&lt;br /&gt;
if slots == nil or slots == &amp;quot;&amp;quot; then slots = &amp;quot;ws-class-props,ws-base-props,ws-data&amp;quot; end&lt;br /&gt;
local page = frame.args[&amp;quot;page&amp;quot;]&lt;br /&gt;
if page == nil or page == &amp;quot;&amp;quot; then page = mw.title.getCurrentTitle().fullText end&lt;br /&gt;
  &lt;br /&gt;
-- get slot data for each slot and add to data table&lt;br /&gt;
local data = {}&lt;br /&gt;
data[1] = {}&lt;br /&gt;
for slot in string.gmatch(slots, &amp;#039;([^,]+)&amp;#039;) do&lt;br /&gt;
    local slotData = p.getSlotData(page,slot)&lt;br /&gt;
    if slotData == nil then slotData = &amp;quot;&amp;quot; end &lt;br /&gt;
    data[1][slot] = slotData&lt;br /&gt;
end&lt;br /&gt;
  &lt;br /&gt;
--mw.logObject(data) &lt;br /&gt;
return mw.af.export(data)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
function p.getSlotContent(frame)&lt;br /&gt;
&lt;br /&gt;
{{#invoke:CspFunctions|getSlotContent|page=Template:Sidebar item|slot=ws-class-props}}&lt;br /&gt;
{{#invoke:CspFunctions|getSlotContent|page=Template:Sidebar item|slot=ws-class-props|nowiki}}&lt;br /&gt;
&lt;br /&gt;
This function returns a string with the exact content of a slot.&lt;br /&gt;
&lt;br /&gt;
frame arguments:&lt;br /&gt;
- page (optional): pagename of the page for which you want the slot content, defaults to current page&lt;br /&gt;
- slot (optional): slot of which you want the content, defaults to &amp;quot;main&amp;quot;&lt;br /&gt;
- 1 (optional: nowiki / preprocess): uses mw.text.nowiki or frame:preprocess on the content before returning it&lt;br /&gt;
&lt;br /&gt;
debug console tests:&lt;br /&gt;
p.getSlotContent() &lt;br /&gt;
p.getSlotContent{args={[&amp;#039;page&amp;#039;]=&amp;#039;Wiki:Testpagina sidebar code&amp;#039;,[&amp;#039;slot&amp;#039;]=&amp;#039;ws-data&amp;#039;}}&lt;br /&gt;
p.getSlotContent{args={[&amp;#039;page&amp;#039;]=&amp;#039;Template:Sidebar item&amp;#039;,[&amp;#039;slot&amp;#039;]=&amp;#039;ws-class-props&amp;#039;}}&lt;br /&gt;
--]]&lt;br /&gt;
function p.getSlotContent(frame)&lt;br /&gt;
  	-- get page from frame arguments or default to current page&lt;br /&gt;
    local page = frame.args[&amp;quot;page&amp;quot;]&lt;br /&gt;
  	if page == nil or page == &amp;#039;&amp;#039; then&lt;br /&gt;
    	page = mw.title.getCurrentTitle().fullText&lt;br /&gt;
    end&lt;br /&gt;
  	-- get slot from frame arguments or default to main&lt;br /&gt;
    local slot = frame.args[&amp;quot;slot&amp;quot;]&lt;br /&gt;
  	if slot == nil or slot == &amp;#039;&amp;#039; then&lt;br /&gt;
    	slot = &amp;#039;main&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
    -- get data from the slot&lt;br /&gt;
    local slotContent = mw.slots.slotContent(slot,page)&lt;br /&gt;
    if slotContent == nil then slotContent = &amp;quot;&amp;quot; end&lt;br /&gt;
  &lt;br /&gt;
    local result = slotContent&lt;br /&gt;
    -- apply the nowiki or preprocess options if needed&lt;br /&gt;
    if frame.args[1] == &amp;quot;nowiki&amp;quot; then&lt;br /&gt;
    	result = mw.text.nowiki(slotContent)&lt;br /&gt;
    elseif frame.args[1] == &amp;quot;preprocess&amp;quot; then&lt;br /&gt;
    	result = frame:preprocess(slotContent)&lt;br /&gt;
    end&lt;br /&gt;
      &lt;br /&gt;
    --mw.log(&amp;#039;result = .. &amp;#039;)&lt;br /&gt;
    --mw.log(result)&lt;br /&gt;
    return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
function p.ClassToClassDefinitionPage(frame)&lt;br /&gt;
&lt;br /&gt;
This function returns the Class definition pagename based on a class input.&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
{{#invoke:CspFunctions|ClassToClassDefinitionPage|Person}}&lt;br /&gt;
returns &amp;quot;Wiki:Class definition/Person&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you want to call this inside another Lua function, make sure to include the class&lt;br /&gt;
as a frame argument, for example:&lt;br /&gt;
p.ClassToClassDefinitionPage{args={&amp;quot;Person&amp;quot;}}&lt;br /&gt;
returns &amp;quot;Wiki:Class definition/Person&amp;quot;&lt;br /&gt;
&lt;br /&gt;
frame args used:&lt;br /&gt;
1 	(text) class, for example &amp;quot;Person&amp;quot; or &amp;quot;Application page&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=p.ClassToClassDefinitionPage{args={&amp;quot;Person&amp;quot;}}&lt;br /&gt;
--]]&lt;br /&gt;
function p.ClassToClassDefinitionPage(frame)&lt;br /&gt;
  local class = frame.args[1]&lt;br /&gt;
  if class == &amp;quot;&amp;quot; or class == nil then&lt;br /&gt;
    return&lt;br /&gt;
  end&lt;br /&gt;
  local classDefinitionPage = &amp;quot;Wiki:Class definition/&amp;quot; .. class&lt;br /&gt;
  return classDefinitionPage&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
function p.preprocess(frame)&lt;br /&gt;
&lt;br /&gt;
{{#invoke:CspFunctions|preprocess|_content=...}}&lt;br /&gt;
{{#invoke:CspFunctions|preprocess|_content={{#time:r|now}} }}&lt;br /&gt;
{{#invoke:CspFunctions|preprocess|_content={{{Intro|}}} {{#time:r|now}} |_args=parent args}}&lt;br /&gt;
&lt;br /&gt;
frame args used:&lt;br /&gt;
_content	(wikitext) for example &amp;quot;{{#time:r|now}}&amp;quot;&lt;br /&gt;
_args 		(optional: &amp;quot;parent args&amp;quot;) use this to add parent args to frame args, so that {{{Example|}}} &lt;br /&gt;
			parameter calls inside the wikitext will work with parameters from a parent page.&lt;br /&gt;
			Note that parent args do not overwrite frame args if they have the same name.&lt;br /&gt;
&lt;br /&gt;
debug console tests:&lt;br /&gt;
=p.preprocess(mw.getCurrentFrame():newChild{title=&amp;quot;test&amp;quot;,args={[&amp;quot;_content&amp;quot;]=&amp;quot;{{#time:r|now}}&amp;quot;}}) &lt;br /&gt;
=p.preprocess(mw.getCurrentFrame():newChild{args={[&amp;quot;Intro&amp;quot;]=&amp;quot;The current time is: &amp;quot;}}:newChild{title=&amp;quot;test&amp;quot;,args={[&amp;quot;_content&amp;quot;]=&amp;quot;{{{Intro|}}} {{#time:r|now}}&amp;quot;,[&amp;quot;_args&amp;quot;]=&amp;quot;parent args&amp;quot;}}) &lt;br /&gt;
--]]&lt;br /&gt;
function p.preprocess(frame)&lt;br /&gt;
  local content = frame.args[&amp;quot;_content&amp;quot;]&lt;br /&gt;
  if frame.args[&amp;quot;_args&amp;quot;] == &amp;quot;parent args&amp;quot; then&lt;br /&gt;
    modifiedArgs = {}&lt;br /&gt;
    for key,value in pairs(frame:getParent().args) do modifiedArgs[key] = value end&lt;br /&gt;
    for key,value in pairs(frame.args) do modifiedArgs[key] = value end&lt;br /&gt;
    modifiedFrame = frame:newChild{args=modifiedArgs}&lt;br /&gt;
    return modifiedFrame:preprocess(content)&lt;br /&gt;
  else&lt;br /&gt;
    return frame:preprocess(content)&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
function p.getParentArg(frame)&lt;br /&gt;
&lt;br /&gt;
{{#invoke:CspFunctions|getParentArg|$pageData}}&lt;br /&gt;
{{#invoke:CspFunctions|getParentArg|$classData}}&lt;br /&gt;
&lt;br /&gt;
This function loops through  parents using frame:getParent until the specified parameter &lt;br /&gt;
is found in one of the parent frames or  the maximum number of 10 iterations is reached.&lt;br /&gt;
&lt;br /&gt;
debug console tests&lt;br /&gt;
=p.getParentArg(mw.getCurrentFrame():newChild{title=&amp;quot;whatever&amp;quot;,args={&amp;quot;a1&amp;quot;,&amp;quot;a2&amp;quot;,[&amp;quot;un&amp;quot;]=&amp;quot;ua&amp;quot;,&amp;quot;a3&amp;quot;}}) &lt;br /&gt;
=p.getParentArg(mw.getCurrentFrame():newChild{title=&amp;quot;Template:SHA&amp;quot;,args={&amp;quot;sha1&amp;quot;,&amp;quot;sha2&amp;quot;,[&amp;quot;ASH&amp;quot;]=&amp;quot;SAH&amp;quot;}}:newChild{title=&amp;quot;Module:Module&amp;quot;,args={&amp;quot;a1&amp;quot;,&amp;quot;a2&amp;quot;,[&amp;quot;un&amp;quot;]=&amp;quot;ua&amp;quot;,&amp;quot;a3&amp;quot;}})&lt;br /&gt;
=p.getParentArg(mw.getCurrentFrame():newChild{args={[&amp;quot;test&amp;quot;]=&amp;quot;123&amp;quot;}}:newChild{args={}}:newChild{args={}}:newChild{args={}}:newChild{args={}}:newChild{args={&amp;quot;test&amp;quot;}})&lt;br /&gt;
=p.getParentArg(mw.getCurrentFrame():newChild{args={[&amp;quot;test&amp;quot;]=&amp;quot;123&amp;quot;}}:newChild{args={}}:newChild{args={}}:newChild{args={}}:newChild{args={}}:newChild{args={}}:newChild{args={}}:newChild{args={}}:newChild{args={}}:newChild{args={}}:newChild{args={&amp;quot;test&amp;quot;}})&lt;br /&gt;
=p.getParentArg(mw.getCurrentFrame():newChild{args={[&amp;quot;test&amp;quot;]=&amp;quot;123&amp;quot;}}:newChild{args={}}:newChild{args={}}:newChild{args={}}:newChild{args={}}:newChild{args={}}:newChild{args={}}:newChild{args={}}:newChild{args={}}:newChild{args={}}:newChild{args={}}:newChild{args={&amp;quot;test&amp;quot;}})&lt;br /&gt;
--]]&lt;br /&gt;
function p.getParentArg(frame)&lt;br /&gt;
  local i = 1&lt;br /&gt;
  local result = nil&lt;br /&gt;
  local parent = frame&lt;br /&gt;
  &lt;br /&gt;
  while i &amp;lt;= 10 and result == nil and parent ~= nil do&lt;br /&gt;
    parent = parent:getParent()&lt;br /&gt;
    if parent ~= nil then&lt;br /&gt;
      result = parent.args[frame.args[1]]&lt;br /&gt;
      mw.log(&amp;quot;i = &amp;quot; .. tostring(i) .. &amp;quot;, result = &amp;quot; .. tostring(result) )&lt;br /&gt;
    else&lt;br /&gt;
      mw.log(&amp;quot;i = &amp;quot;.. tostring(i) .. &amp;quot;, no parent&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    i = i+1&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  if result == nil then result = &amp;quot;&amp;quot; end&lt;br /&gt;
  &lt;br /&gt;
  return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
function p.gmatch(frame)&lt;br /&gt;
&lt;br /&gt;
This function applies the pattern matching function mw.ustring.match to an input string and returns a string containing matched values (only unique values).&lt;br /&gt;
&lt;br /&gt;
frame args used:&lt;br /&gt;
1 	input to which pattern matching will be applied&lt;br /&gt;
2 	pattern &lt;br /&gt;
3 	optional separator, defaults to &amp;quot;,&amp;quot;&lt;br /&gt;
4 	optional conjunction (separator between final 2 items), defaults to separator&lt;br /&gt;
&lt;br /&gt;
examples use case:&lt;br /&gt;
{{#invoke:CspFunctions|gmatch|&amp;#039;sub-header sidebar&amp;#039; &amp;#039;main sidebar&amp;#039;|([^ \&amp;#039;&amp;quot;]+)|,}} will return: sub-header,sidebar,main&lt;br /&gt;
&lt;br /&gt;
debug console test:&lt;br /&gt;
=p.gmatch(mw.getCurrentFrame():newChild{args={&amp;quot;&amp;#039;sub-header sidebar&amp;#039; &amp;#039;main sidebar&amp;#039;&amp;quot;,&amp;#039;([^ \&amp;#039;&amp;quot;]+)&amp;#039;,&amp;quot;,&amp;quot;}}) &lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
function p.gmatch(frame)&lt;br /&gt;
  local layoutAreas = frame.args[1]&lt;br /&gt;
  local pattern = frame.args[2]&lt;br /&gt;
  local separator = frame.args[3]&lt;br /&gt;
  local conjunction = frame.args[4]&lt;br /&gt;
  &lt;br /&gt;
  if separator == nil then separator = &amp;quot;&amp;quot; end&lt;br /&gt;
  if conjunction == nil then conjunction = separator end&lt;br /&gt;
  &lt;br /&gt;
  local resultTable = {}&lt;br /&gt;
  local duplicateCheck = {}&lt;br /&gt;
  for item in mw.ustring.gmatch(layoutAreas,pattern) do&lt;br /&gt;
    if duplicateCheck[item] == nil then&lt;br /&gt;
      table.insert(resultTable,item)&lt;br /&gt;
      duplicateCheck[item] = true&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  return mw.text.listToText(resultTable,separator,conjunction)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Ebc16062-dd09-4928-8cf3-821f492b0c44</name></author>
	</entry>
</feed>