<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASvara%2Fsandbox</id>
	<title>Module:Svara/sandbox - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASvara%2Fsandbox"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Svara/sandbox&amp;action=history"/>
	<updated>2026-05-27T22:27:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Svara/sandbox&amp;diff=147095&amp;oldid=prev</id>
		<title>imported&gt;Renamed user ExPsittacine: Add a caption.</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Svara/sandbox&amp;diff=147095&amp;oldid=prev"/>
		<updated>2018-10-05T17:51:11Z</updated>

		<summary type="html">&lt;p&gt;Add a caption.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local mSep = require(&amp;#039;Module:Separated entries&amp;#039;)&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Some of the characters used do not render properly on all browsers.&lt;br /&gt;
local svaraDesc = mw.loadData(&amp;#039;Module:Svara/equivalents&amp;#039;)&lt;br /&gt;
local svaraResolve = mw.loadData(&amp;#039;Module:Svara/resolve&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
-- Convert shorthand notation into standard notation.&lt;br /&gt;
function p.resolve(input, type)&lt;br /&gt;
	local svaras = svaraResolve[type]&lt;br /&gt;
&lt;br /&gt;
	for key, value in pairs(input) do&lt;br /&gt;
		if svaras[value] then&lt;br /&gt;
			input[key] = svaras[value];&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return input&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Called by the svaraC template&lt;br /&gt;
-- print(p.carnatic({&amp;#039;S&amp;#039;, &amp;#039;r1&amp;#039;, &amp;#039;g2&amp;#039;, &amp;#039;m1&amp;#039;, &amp;#039;P&amp;#039;, &amp;#039;d2&amp;#039;, &amp;#039;N3&amp;#039;, &amp;quot;S&amp;#039;&amp;quot;}))&lt;br /&gt;
function p.carnatic(frame)&lt;br /&gt;
	-- Carnatic notation is case-insensitive. Enable the capitalise option.&lt;br /&gt;
	local input = p.sanitiseArgs(frame, true)&lt;br /&gt;
	input = p.resolve(input, &amp;quot;carnatic&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	return p._main(frame, input, &amp;#039;carnatic&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Called by the svaraH template&lt;br /&gt;
-- print(p.hindustani({&amp;#039;S&amp;#039;, &amp;#039;r&amp;#039;, &amp;#039;G&amp;#039;, &amp;#039;m&amp;#039;, &amp;#039;P&amp;#039;, &amp;#039;d&amp;#039;, &amp;#039;N&amp;#039;, &amp;quot;S&amp;#039;&amp;quot;}))&lt;br /&gt;
function p.hindustani(frame)&lt;br /&gt;
	local input = p.sanitiseArgs(frame)&lt;br /&gt;
	input = p.resolve(input, &amp;quot;hindustani&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	return p._main(frame, input, &amp;#039;hindustani&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Get the equivalent note in other notation standards.&lt;br /&gt;
-- print(p.getEquivalents({&amp;#039;S&amp;#039;, &amp;#039;R₂&amp;#039;, &amp;#039;G₃&amp;#039;, &amp;#039;M₁&amp;#039;, &amp;#039;P&amp;#039;, &amp;#039;D₂&amp;#039;, &amp;#039;N₃&amp;#039;, &amp;#039;Ṡ&amp;#039;}, &amp;#039;carnatic&amp;#039;))&lt;br /&gt;
function p.getEquivalents(frame, args, type)&lt;br /&gt;
	local output = &amp;#039;&amp;#039;&lt;br /&gt;
	local western = {}&lt;br /&gt;
	local alternate = {}&lt;br /&gt;
	local altType = &amp;quot;&amp;quot;&lt;br /&gt;
	local altText = &amp;quot;&amp;quot;&lt;br /&gt;
	local entry&lt;br /&gt;
&lt;br /&gt;
	if (type == &amp;quot;carnatic&amp;quot;) then&lt;br /&gt;
		altType = &amp;quot;hindustani&amp;quot;&lt;br /&gt;
		altText = &amp;quot;Hindustani&amp;quot;&lt;br /&gt;
	else &lt;br /&gt;
		altType = &amp;quot;carnatic&amp;quot;&lt;br /&gt;
		altText = &amp;quot;Carnatic&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for key, value in pairs(args) do&lt;br /&gt;
		if svaraDesc[value] then&lt;br /&gt;
			entry = svaraDesc[value]&lt;br /&gt;
			alternate[key] = entry[altType];&lt;br /&gt;
			western[key] = entry[&amp;quot;western&amp;quot;];&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	output = frame:expandTemplate{title = &amp;#039;bulleted list&amp;#039;, args = {altText .. &amp;quot;: &amp;quot; .. p._main(frame, alternate, nil),&lt;br /&gt;
		&amp;quot;Western: &amp;quot; .. p._main(frame, western, &amp;quot;western&amp;quot;)}}&lt;br /&gt;
	&lt;br /&gt;
	output = &amp;quot;Alternate notations:&amp;quot; .. output&lt;br /&gt;
	&lt;br /&gt;
	return output&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Generates the output.&lt;br /&gt;
function p._main(frame, input, type)&lt;br /&gt;
	local foot = nil&lt;br /&gt;
	local abbr = true&lt;br /&gt;
	local svaras = {}&lt;br /&gt;
	&lt;br /&gt;
	if input[&amp;#039;foot&amp;#039;] then&lt;br /&gt;
		foot = true&lt;br /&gt;
		input[&amp;#039;foot&amp;#039;] = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if input[&amp;#039;abbr&amp;#039;] then&lt;br /&gt;
		abbr = false&lt;br /&gt;
		input[&amp;#039;abbr&amp;#039;] = nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for key, value in pairs(input) do&lt;br /&gt;
		svaras[key] = value&lt;br /&gt;
&lt;br /&gt;
		if (abbr) then&lt;br /&gt;
			if type ~= &amp;quot;western&amp;quot; and svaraDesc[value] then&lt;br /&gt;
				-- Use the abbr tag to add a description; avoid the default dotted&lt;br /&gt;
				-- underline style as it messes up the macrons.&lt;br /&gt;
				svaras[key] = frame:expandTemplate{title = &amp;#039;abbr&amp;#039;, args = {value, svaraDesc[value][&amp;#039;desc&amp;#039;], style=&amp;quot;text-decoration:none;&amp;quot;}}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	svaras[&amp;#039;separator&amp;#039;] = &amp;quot;&amp;amp;nbsp;&amp;quot;&lt;br /&gt;
	local output = mSep.main(svaras)&lt;br /&gt;
&lt;br /&gt;
	if (foot) then&lt;br /&gt;
		local equivalents = p.getEquivalents(frame, input, type)&lt;br /&gt;
		output = output .. frame:expandTemplate{title = &amp;#039;efn&amp;#039;, args = {equivalents, group=&amp;#039;svara&amp;#039;}}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return output&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Currently cleans up and returns the input.&lt;br /&gt;
function p.sanitiseArgs(frame, capitalise)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	-- Capitalise arguments.&lt;br /&gt;
	if (capitalise) then&lt;br /&gt;
		for key, value in pairs(args) do&lt;br /&gt;
			args[key] = mw.ustring.upper(args[key]);&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Called by the svara template.&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = p.sanitiseArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	return p._main(frame, args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Runs through the entire functionality of this module.&lt;br /&gt;
function p.status(frame)&lt;br /&gt;
	local types = {&amp;#039;hindustani&amp;#039;, &amp;#039;carnatic&amp;#039;}&lt;br /&gt;
	local output = &amp;#039;&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	for key, value in pairs(types) do&lt;br /&gt;
		local temp = &amp;quot;&amp;lt;table class=&amp;#039;wikitable&amp;#039;&amp;gt;\n&amp;quot;&lt;br /&gt;
		local input = svaraResolve[value]&lt;br /&gt;
		local name = &amp;#039;svara&amp;#039; .. mw.ustring.upper(mw.ustring.sub(value, 0, 1))&lt;br /&gt;
		local anno = {foot = &amp;#039;yes&amp;#039;, separator = &amp;#039;&amp;amp;nbsp;&amp;#039;}&lt;br /&gt;
		&lt;br /&gt;
		temp = temp .. &amp;#039;&amp;lt;caption&amp;gt;&amp;#039; .. name .. &amp;#039;&amp;lt;/caption&amp;gt;\n&amp;#039;&lt;br /&gt;
		for key1, value1 in pairs(input) do&lt;br /&gt;
			temp = temp .. &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;quot; .. key1 .. &amp;quot;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;quot;&lt;br /&gt;
				.. frame:expandTemplate{title = name, args = {key1}} -- add foot=&amp;#039;yes&amp;#039; to isolate individual errors.&lt;br /&gt;
				.. &amp;quot;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;quot; .. value1 .. &amp;quot;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;\n&amp;quot;&lt;br /&gt;
			anno[#anno + 1] = key1&lt;br /&gt;
		end&lt;br /&gt;
		temp = temp .. &amp;quot;&amp;lt;/table&amp;gt;\n&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		output = output .. temp&lt;br /&gt;
			.. mSep.main(anno) .. &amp;quot;\n\n&amp;quot;&lt;br /&gt;
			.. frame:expandTemplate{title = name, args = anno}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return output&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Renamed user ExPsittacine</name></author>
	</entry>
</feed>