<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ASvara</id>
	<title>Module:Svara - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ASvara"/>
	<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:Svara&amp;action=history"/>
	<updated>2026-06-14T01:03:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.3</generator>
	<entry>
		<id>https://mywikibiz.com/index.php?title=Module:Svara&amp;diff=479637&amp;oldid=prev</id>
		<title>Zoran: Pywikibot 6.4.0</title>
		<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:Svara&amp;diff=479637&amp;oldid=prev"/>
		<updated>2021-07-16T07:29:15Z</updated>

		<summary type="html">&lt;p&gt;Pywikibot 6.4.0&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local mSep = require('Module:Separated entries')&lt;br /&gt;
local getArgs = require('Module:Arguments').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('Module:Svara/equivalents')&lt;br /&gt;
local svaraResolve = mw.loadData('Module:Svara/resolve')&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({'S', 'r1', 'g2', 'm1', 'P', 'd2', 'N3', &amp;quot;S'&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, 'carnatic')&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Called by the svaraH template&lt;br /&gt;
-- print(p.hindustani({'S', 'r', 'G', 'm', 'P', 'd', 'N', &amp;quot;S'&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, 'hindustani')&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Get the equivalent note in other notation standards.&lt;br /&gt;
-- print(p.getEquivalents({'S', 'R₂', 'G₃', 'M₁', 'P', 'D₂', 'N₃', 'Ṡ'}, 'carnatic'))&lt;br /&gt;
function p.getEquivalents(frame, args, type)&lt;br /&gt;
	local output = ''&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 = 'bulleted list', 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['foot'] then&lt;br /&gt;
		foot = true&lt;br /&gt;
		input['foot'] = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if input['abbr'] then&lt;br /&gt;
		abbr = false&lt;br /&gt;
		input['abbr'] = 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 = 'abbr', args = {value, svaraDesc[value]['desc'], 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['separator'] = &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 = 'efn', args = {equivalents, group='svara'}}&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 = {'hindustani', 'carnatic'}&lt;br /&gt;
	local output = ''&lt;br /&gt;
	&lt;br /&gt;
	for key, value in pairs(types) do&lt;br /&gt;
		local temp = &amp;quot;&amp;lt;table class='wikitable'&amp;gt;\n&amp;quot;&lt;br /&gt;
		local input = svaraResolve[value]&lt;br /&gt;
		local name = 'svara' .. mw.ustring.upper(mw.ustring.sub(value, 0, 1))&lt;br /&gt;
		local anno = {foot = 'yes', separator = '&amp;amp;nbsp;'}&lt;br /&gt;
&lt;br /&gt;
		temp = temp .. '&amp;lt;caption&amp;gt;' .. name .. '&amp;lt;/caption&amp;gt;\n'&lt;br /&gt;
&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='yes' 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>Zoran</name></author>
	</entry>
</feed>