<?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%3AIPA_symbol%2Foverview</id>
	<title>Module:IPA symbol/overview - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AIPA_symbol%2Foverview"/>
	<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:IPA_symbol/overview&amp;action=history"/>
	<updated>2026-06-14T07:09:20Z</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:IPA_symbol/overview&amp;diff=471940&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:IPA_symbol/overview&amp;diff=471940&amp;oldid=prev"/>
		<updated>2021-07-15T22:02:47Z</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 data = mw.loadData('Module:IPA symbol/data')&lt;br /&gt;
local univPatterns, keyPatterns = data.data.univPatterns, data.data.keyPatterns&lt;br /&gt;
data = data.rawData&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local ret = { frame:extensionTag{&lt;br /&gt;
		name = 'templatestyles',&lt;br /&gt;
		args = { src = 'Module:IPA symbol/overview/styles.css' }&lt;br /&gt;
	} }&lt;br /&gt;
	local count, sCount = {}, {}&lt;br /&gt;
	&lt;br /&gt;
	-- Error detection&lt;br /&gt;
	do&lt;br /&gt;
		local symbols, dupes, invChars = {}, {}, {}&lt;br /&gt;
		local function checkSubs(t, s, name)&lt;br /&gt;
			for _, v in ipairs(t) do&lt;br /&gt;
				local matched = mw.ustring.match(s, v.pat)&lt;br /&gt;
				if matched then&lt;br /&gt;
					table.insert(invChars, { name, matched, v.rep })&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		local function check(s, checkKeyPats)&lt;br /&gt;
			sCount[s] = 0&lt;br /&gt;
			for i, v in ipairs(data[s]) do&lt;br /&gt;
				for _, symbol in ipairs(v.symbols) do&lt;br /&gt;
					if symbols[symbol] then&lt;br /&gt;
						table.insert(dupes, symbol)&lt;br /&gt;
					else&lt;br /&gt;
						symbols[symbol] = true&lt;br /&gt;
					end&lt;br /&gt;
					checkSubs(univPatterns, symbol, v.name)&lt;br /&gt;
					if checkKeyPats then&lt;br /&gt;
						checkSubs(keyPatterns, symbol, v.name)&lt;br /&gt;
					end&lt;br /&gt;
					sCount[s] = sCount[s] + 1&lt;br /&gt;
				end&lt;br /&gt;
				count[s] = i&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		check('sounds', true)&lt;br /&gt;
		check('diacritics')&lt;br /&gt;
		&lt;br /&gt;
		if dupes[1] or invChars[1] then&lt;br /&gt;
			for _, v in ipairs(dupes) do&lt;br /&gt;
				table.insert(ret, string.format(&lt;br /&gt;
					'*Error: &amp;quot;&amp;lt;span class=&amp;quot;IPA&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;quot; is defined more than once.\n',&lt;br /&gt;
					mw.text.nowiki(v)))&lt;br /&gt;
			end&lt;br /&gt;
			for _, v in ipairs(invChars) do&lt;br /&gt;
				table.insert(ret, string.format(&lt;br /&gt;
					'*Error: A symbol for &amp;quot;%s&amp;quot; uses &amp;quot;&amp;lt;span class=&amp;quot;IPA&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;quot;, which will be replaced by &amp;quot;&amp;lt;span class=&amp;quot;IPA&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;quot;.\n',&lt;br /&gt;
					v[1], mw.text.nowiki(v[2]), mw.text.nowiki(v[3])))&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(ret, 'No errors were found. ')&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(ret, string.format(&lt;br /&gt;
		'%s entries (%s in &amp;quot;sounds&amp;quot;, %s in &amp;quot;diacritics&amp;quot;), %s symbols (%s in &amp;quot;sounds&amp;quot;, %s in &amp;quot;diacritics&amp;quot;).\n\n',&lt;br /&gt;
		count.sounds + count.diacritics, count.sounds, count.diacritics,&lt;br /&gt;
		sCount.sounds + sCount.diacritics, sCount.sounds, sCount.diacritics))&lt;br /&gt;
	table.insert(ret,&lt;br /&gt;
		'Parentheses denote a link automatically inherited from the name field. In italics are redirects.\n')&lt;br /&gt;
	&lt;br /&gt;
	-- Table&lt;br /&gt;
	table.insert(ret,&lt;br /&gt;
		'{| class=&amp;quot;wikitable sortable IPA-symbol-overview&amp;quot;\n!Name!!Symbols!!Article!!Audio!!Group\n')&lt;br /&gt;
	local function renderRows(s)&lt;br /&gt;
		for _, v in ipairs(data[s]) do&lt;br /&gt;
			local parenL = v.article and '' or '('&lt;br /&gt;
			local parenR = v.article and '' or ')'&lt;br /&gt;
			local article = v.article or v.name&lt;br /&gt;
			local symbols = {}&lt;br /&gt;
			for j, w in ipairs(v.symbols) do&lt;br /&gt;
				symbols[j] = mw.text.nowiki(w)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local audio = ''&lt;br /&gt;
			if v.audio then&lt;br /&gt;
				if frame.args.check_wikidata == 'yes' then&lt;br /&gt;
					local rt = mw.title.new(article).redirectTarget&lt;br /&gt;
					rt = rt and rt.text or article&lt;br /&gt;
					local qId = mw.wikibase.getEntityIdForTitle(rt)&lt;br /&gt;
					local wdAudio = qId and mw.wikibase.getEntity(qId).claims&lt;br /&gt;
					wdAudio = wdAudio and wdAudio['P51']&lt;br /&gt;
					if wdAudio then&lt;br /&gt;
						wdAudio = wdAudio[1].mainsnak.datavalue.value&lt;br /&gt;
						audio = wdAudio and wdAudio ~= v.audio&lt;br /&gt;
							and ' (≠ [[wikidata:' .. qId .. '#P51|Wikidata]])'&lt;br /&gt;
							or ''&lt;br /&gt;
					elseif qId then&lt;br /&gt;
						audio = ' (not on [[wikidata:' .. qId .. '|Wikidata]])'&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				audio = string.format(&lt;br /&gt;
					'[[:File:%s|%s]] &amp;lt;small&amp;gt;([[Media:%s|play]])&amp;lt;/small&amp;gt;',&lt;br /&gt;
					v.audio, v.audio, v.audio) .. audio&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			table.insert(ret, string.format(&lt;br /&gt;
				'|-\n|%s||class=&amp;quot;IPA&amp;quot;|%s||%s[[:%s]]%s||%s||%s\n',&lt;br /&gt;
				v.name, table.concat(symbols, '&amp;amp;thinsp;, '), parenL, article,&lt;br /&gt;
				parenR, audio, s))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	renderRows('sounds')&lt;br /&gt;
	renderRows('diacritics')&lt;br /&gt;
	table.insert(ret, '|}')&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Zoran</name></author>
	</entry>
</feed>