<?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%3ASandbox%2FNardog%2F2</id>
	<title>Module:Sandbox/Nardog/2 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FNardog%2F2"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Nardog/2&amp;action=history"/>
	<updated>2026-08-01T22:21:38Z</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:Sandbox/Nardog/2&amp;diff=145875&amp;oldid=prev</id>
		<title>imported&gt;Nardog at 16:20, 12 July 2017</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Nardog/2&amp;diff=145875&amp;oldid=prev"/>
		<updated>2017-07-12T16:20:52Z</updated>

		<summary type="html">&lt;p&gt;&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;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local gsub = mw.ustring.gsub&lt;br /&gt;
&lt;br /&gt;
local function isCons(s)&lt;br /&gt;
	if s == &amp;#039;b&amp;#039;&lt;br /&gt;
	or s == &amp;#039;d&amp;#039;&lt;br /&gt;
	or s == &amp;#039;dj&amp;#039;&lt;br /&gt;
	or s == &amp;#039;dʒ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ð&amp;#039;&lt;br /&gt;
	or s == &amp;#039;f&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ɡ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;h&amp;#039;&lt;br /&gt;
	or s == &amp;#039;hw&amp;#039;&lt;br /&gt;
	or s == &amp;#039;j&amp;#039;&lt;br /&gt;
	or s == &amp;#039;k&amp;#039;&lt;br /&gt;
	or s == &amp;#039;l&amp;#039;&lt;br /&gt;
	or s == &amp;#039;lj&amp;#039;&lt;br /&gt;
	or s == &amp;#039;m&amp;#039;&lt;br /&gt;
	or s == &amp;#039;n&amp;#039;&lt;br /&gt;
	or s == &amp;#039;nj&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ŋ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;p&amp;#039;&lt;br /&gt;
	or s == &amp;#039;r&amp;#039;&lt;br /&gt;
	or s == &amp;#039;s&amp;#039;&lt;br /&gt;
	or s == &amp;#039;sj&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ʃ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;t&amp;#039;&lt;br /&gt;
	or s == &amp;#039;tj&amp;#039;&lt;br /&gt;
	or s == &amp;#039;tʃ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;θ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;θj&amp;#039;&lt;br /&gt;
	or s == &amp;#039;v&amp;#039;&lt;br /&gt;
	or s == &amp;#039;w&amp;#039;&lt;br /&gt;
	or s == &amp;#039;z&amp;#039;&lt;br /&gt;
	or s == &amp;#039;zj&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ʒ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;x&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ʔ&amp;#039;&lt;br /&gt;
	then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isVowel(s)&lt;br /&gt;
	if s == &amp;#039;ɑː&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ɑːr&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ɒ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ɒr&amp;#039;&lt;br /&gt;
	or s == &amp;#039;æ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ær&amp;#039;&lt;br /&gt;
	or s == &amp;#039;aɪ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;aɪər&amp;#039;&lt;br /&gt;
	or s == &amp;#039;aʊ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;aʊər&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ɛ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ɛr&amp;#039;&lt;br /&gt;
	or s == &amp;#039;eɪ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ɛər&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ɪ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ɪr&amp;#039;&lt;br /&gt;
	or s == &amp;#039;iː&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ɪər&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ɔː&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ɔːr&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ɔɪ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ɔɪər&amp;#039;&lt;br /&gt;
	or s == &amp;#039;oʊ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ɔər&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ʊ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ʊr&amp;#039;&lt;br /&gt;
	or s == &amp;#039;uː&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ʊər&amp;#039;&lt;br /&gt;
	or s == &amp;#039;juː&amp;#039;&lt;br /&gt;
	or s == &amp;#039;jʊər&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ʌ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ʌr&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ɜːr&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ə&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ər&amp;#039;&lt;br /&gt;
	or s == &amp;#039;əl&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ən&amp;#039;&lt;br /&gt;
	or s == &amp;#039;əm&amp;#039;&lt;br /&gt;
	or s == &amp;#039;i&amp;#039;&lt;br /&gt;
	or s == &amp;#039;u&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ᵻ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ᵿ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;jᵿ&amp;#039;&lt;br /&gt;
	then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isChecked(s)&lt;br /&gt;
	if s == &amp;#039;ɒ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;æ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ɛ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ɪ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ʊ&amp;#039;&lt;br /&gt;
	or s == &amp;#039;ʌ&amp;#039;&lt;br /&gt;
	then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isSeg(s)&lt;br /&gt;
	if isCons(s) or isVowel(s) then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isStr(s)&lt;br /&gt;
	if s == &amp;#039;ˈ&amp;#039; or s == &amp;#039;ˌ&amp;#039; then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function toResp(s)&lt;br /&gt;
	if s == &amp;#039;dj&amp;#039; then&lt;br /&gt;
		return &amp;#039;dy&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;dʒ&amp;#039; then&lt;br /&gt;
		return &amp;#039;j&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ð&amp;#039; then&lt;br /&gt;
		return &amp;#039;dh&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ɡ&amp;#039; then&lt;br /&gt;
		return &amp;#039;g&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;hw&amp;#039; then&lt;br /&gt;
		return &amp;#039;wh&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;j&amp;#039; then&lt;br /&gt;
		return &amp;#039;y&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;lj&amp;#039; then&lt;br /&gt;
		return &amp;#039;ly&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;nj&amp;#039; then&lt;br /&gt;
		return &amp;#039;ny&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ŋ&amp;#039; then&lt;br /&gt;
		return &amp;#039;ng&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;sj&amp;#039; then&lt;br /&gt;
		return &amp;#039;sy&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ʃ&amp;#039; then&lt;br /&gt;
		return &amp;#039;sh&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;tj&amp;#039; then&lt;br /&gt;
		return &amp;#039;ty&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;tʃ&amp;#039; then&lt;br /&gt;
		return &amp;#039;ch&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;θ&amp;#039; then&lt;br /&gt;
		return &amp;#039;th&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;θj&amp;#039; then&lt;br /&gt;
		return &amp;#039;thy&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;zj&amp;#039; then&lt;br /&gt;
		return &amp;#039;zy&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ʒ&amp;#039; then&lt;br /&gt;
		return &amp;#039;zh&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ɑː&amp;#039; then&lt;br /&gt;
		return &amp;#039;ah&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ɑːr&amp;#039; then&lt;br /&gt;
		return &amp;#039;ar&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ɒ&amp;#039; then&lt;br /&gt;
		return &amp;#039;o&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ɒr&amp;#039; then&lt;br /&gt;
		return &amp;#039;orr&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;æ&amp;#039; then&lt;br /&gt;
		return &amp;#039;a&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ær&amp;#039; then&lt;br /&gt;
		return &amp;#039;arr&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;aɪ&amp;#039; then&lt;br /&gt;
		return &amp;#039;eye&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;aɪər&amp;#039; then&lt;br /&gt;
		return &amp;#039;ire&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;aʊ&amp;#039; then&lt;br /&gt;
		return &amp;#039;ow&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;aʊər&amp;#039; then&lt;br /&gt;
		return &amp;#039;owr&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ɛ&amp;#039; then&lt;br /&gt;
		return &amp;#039;e&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ɛr&amp;#039; then&lt;br /&gt;
		return &amp;#039;err&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;eɪ&amp;#039; then&lt;br /&gt;
		return &amp;#039;ay&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ɛər&amp;#039; then&lt;br /&gt;
		return &amp;#039;air&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ɪ&amp;#039; then&lt;br /&gt;
		return &amp;#039;i&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ɪr&amp;#039; then&lt;br /&gt;
		return &amp;#039;irr&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;iː&amp;#039; then&lt;br /&gt;
		return &amp;#039;ee&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ɪər&amp;#039; then&lt;br /&gt;
		return &amp;#039;eer&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ɔː&amp;#039; then&lt;br /&gt;
		return &amp;#039;aw&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ɔːr&amp;#039; then&lt;br /&gt;
		return &amp;#039;or&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ɔɪ&amp;#039; then&lt;br /&gt;
		return &amp;#039;oy&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ɔɪər&amp;#039; then&lt;br /&gt;
		return &amp;#039;oir&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;oʊ&amp;#039; then&lt;br /&gt;
		return &amp;#039;oh&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ɔər&amp;#039; then&lt;br /&gt;
		return &amp;#039;ohr&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ʊ&amp;#039; then&lt;br /&gt;
		return &amp;#039;uu&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ʊr&amp;#039; then&lt;br /&gt;
		return &amp;#039;uurr&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;uː&amp;#039; then&lt;br /&gt;
		return &amp;#039;oo&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ʊər&amp;#039; then&lt;br /&gt;
		return &amp;#039;oor&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;juː&amp;#039; then&lt;br /&gt;
		return &amp;#039;ew&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;jʊər&amp;#039; then&lt;br /&gt;
		return &amp;#039;ewr&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ʌ&amp;#039; then&lt;br /&gt;
		return &amp;#039;u&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ʌr&amp;#039; then&lt;br /&gt;
		return &amp;#039;urr&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ɜːr&amp;#039; then&lt;br /&gt;
		return &amp;#039;ur&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;i&amp;#039; then&lt;br /&gt;
		return &amp;#039;ee&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;u&amp;#039; then&lt;br /&gt;
		return &amp;#039;oo&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ᵻ&amp;#039; then&lt;br /&gt;
		return &amp;#039;i&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;ᵿ&amp;#039; then&lt;br /&gt;
		return &amp;#039;uu&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;jᵿ&amp;#039; then&lt;br /&gt;
		return &amp;#039;yuu&amp;#039;&lt;br /&gt;
	elseif s == &amp;#039;x&amp;#039; then&lt;br /&gt;
		return &amp;#039;kh&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local ret = { &amp;#039;&amp;#039; }&lt;br /&gt;
	local strNum = {}&lt;br /&gt;
	&lt;br /&gt;
	local hasPrimStress = false&lt;br /&gt;
	for i, v in ipairs(args) do&lt;br /&gt;
		-- Swap stress and consonant after checked vowel&lt;br /&gt;
		if isChecked(args[i - 2]) and isStr(args[i - 1]) and isCons(v) then&lt;br /&gt;
			args[i] = args[i - 1]&lt;br /&gt;
			args[i - 1] = v&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Disable secondary stress following primary stress&lt;br /&gt;
		if v == &amp;#039;ˈ&amp;#039; then&lt;br /&gt;
			hasPrimStress = true&lt;br /&gt;
		elseif v == &amp;#039;_&amp;#039; or v == &amp;#039;,_&amp;#039; then -- But not in case of a word break&lt;br /&gt;
			hasPrimStress = false&lt;br /&gt;
		end&lt;br /&gt;
		if hasPrimStress and v == &amp;#039;ˌ&amp;#039; then&lt;br /&gt;
			args[i] = &amp;#039;.&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i, v in ipairs(args) do&lt;br /&gt;
		if v == &amp;#039;.&amp;#039; then&lt;br /&gt;
			table.insert(ret, &amp;#039;&amp;#039;)&lt;br /&gt;
		elseif isStr(v) then&lt;br /&gt;
			if isSeg(args[i - 1]) then&lt;br /&gt;
				table.insert(ret, &amp;#039;&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(strNum, #ret)&lt;br /&gt;
		elseif isSeg(v) then&lt;br /&gt;
			ret[#ret] = ret[#ret] .. toResp(v)&lt;br /&gt;
&lt;br /&gt;
			-- Break after checked vowel + segment&lt;br /&gt;
			if isChecked(args[i - 1]) and isSeg(v) and isSeg(args[i + 1]) then&lt;br /&gt;
				-- See if there&amp;#039;s a vowel down the line&lt;br /&gt;
				local j = i + 1&lt;br /&gt;
				while args[j] do&lt;br /&gt;
					if isVowel(args[j]) then&lt;br /&gt;
						j = isVowel(args[j])&lt;br /&gt;
						break&lt;br /&gt;
					end&lt;br /&gt;
					j = j + 1&lt;br /&gt;
				end&lt;br /&gt;
				if j == true then -- There IS a vowel down the line&lt;br /&gt;
					table.insert(ret, &amp;#039;&amp;#039;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			-- Break after free vowel&lt;br /&gt;
			if isVowel(v) and not isChecked(v) and isCons(args[i + 1]) and isSeg(args[i + 2]) then&lt;br /&gt;
				table.insert(ret, &amp;#039;&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			-- Break between vowels&lt;br /&gt;
			if isVowel(v) and not isChecked(v) and isVowel(args[i + 1]) then&lt;br /&gt;
				table.insert(ret, &amp;#039;&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- Process separators&lt;br /&gt;
			table.insert(ret, v)&lt;br /&gt;
			table.insert(ret, &amp;#039;&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i, v in ipairs(ret) do&lt;br /&gt;
		v = gsub(v, &amp;#039;([dlnstz]h?)yoo&amp;#039;, &amp;#039;%1ew&amp;#039;)&lt;br /&gt;
		v = gsub(v, &amp;#039;g([ei])&amp;#039;, &amp;#039;gh%1&amp;#039;)&lt;br /&gt;
		v = gsub(v, &amp;#039;ch$&amp;#039;, &amp;#039;tch&amp;#039;)&lt;br /&gt;
		v = gsub(v, &amp;#039;([eio])s$&amp;#039;, &amp;#039;%1ss&amp;#039;)&lt;br /&gt;
		v = gsub(v, &amp;#039;(.)eye(.+)&amp;#039;, &amp;#039;%1y%2e&amp;#039;)&lt;br /&gt;
		v = gsub(v, &amp;#039;(.)eye&amp;#039;, &amp;#039;%1y&amp;#039;)&lt;br /&gt;
		ret[i] = v&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Capitalize stressed syllables&lt;br /&gt;
	for i, v in ipairs(strNum) do&lt;br /&gt;
		ret[v] = mw.ustring.upper(ret[v])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(ret, &amp;#039;-&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	return frame:expandTemplate{&lt;br /&gt;
		title = &amp;#039;Template:IPAc-en&amp;#039;,&lt;br /&gt;
		args = args&lt;br /&gt;
	} .. &amp;#039; &amp;#039; ..&lt;br /&gt;
--[[	frame:expandTemplate{&lt;br /&gt;
		title = &amp;#039;Template:Respell&amp;#039;,&lt;br /&gt;
		args = p._main(args)&lt;br /&gt;
	}&lt;br /&gt;
	table.concat(p._main(args), &amp;#039;-&amp;#039;)]]&lt;br /&gt;
	p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Nardog</name></author>
	</entry>
</feed>