<?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%2F13</id>
	<title>Module:Sandbox/Nardog/13 - 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%2F13"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Nardog/13&amp;action=history"/>
	<updated>2026-08-03T00:35:01Z</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/13&amp;diff=145870&amp;oldid=prev</id>
		<title>imported&gt;Legoktm: Replace Module:No globals with require( &quot;strict&quot; )</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Nardog/13&amp;diff=145870&amp;oldid=prev"/>
		<updated>2022-10-23T21:07:31Z</updated>

		<summary type="html">&lt;p&gt;Replace &lt;a href=&quot;/research/Module:No_globals&quot; title=&quot;Module:No globals&quot;&gt;Module:No globals&lt;/a&gt; with require( &amp;quot;strict&amp;quot; )&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
local p = {}&lt;br /&gt;
local curFrame&lt;br /&gt;
&lt;br /&gt;
local function getLangLink(s)&lt;br /&gt;
	return require(&amp;#039;Module:Lang&amp;#039;)._name_from_tag({ s, link = &amp;#039;yes&amp;#039;, --[[template = &amp;#039;&amp;#039;]] })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeCrossRef(s, checkExistence)&lt;br /&gt;
	if not s then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if s == &amp;#039;none&amp;#039; then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if checkExistence then&lt;br /&gt;
		local title = mw.title.new(s)&lt;br /&gt;
		if title.exists then&lt;br /&gt;
			local redirect = title.redirectTarget&lt;br /&gt;
			if redirect then&lt;br /&gt;
				redirect = redirect.fullText&lt;br /&gt;
				if redirect:find(&amp;#039;[Pp]honolog[iy]&amp;#039;) then&lt;br /&gt;
					s = redirect&lt;br /&gt;
				else&lt;br /&gt;
					return nil&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				s = title.fullText;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	s = string.format(&amp;#039;See [[%s]].&amp;#039;, s)&lt;br /&gt;
	return &amp;#039; &amp;#039; .. curFrame:expandTemplate{&lt;br /&gt;
		title = &amp;#039;Template:Crossreference&amp;#039;,&lt;br /&gt;
		args = { s }&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function incrementRowspan(cell)&lt;br /&gt;
	local num = cell:getAttr(&amp;#039;rowspan&amp;#039;)&lt;br /&gt;
	num = num and num + 1 or 2&lt;br /&gt;
	cell:attr(&amp;#039;rowspan&amp;#039;, num)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	curFrame = curFrame or mw.getCurrentFrame()&lt;br /&gt;
	&lt;br /&gt;
	local rows, hasDialects = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if k ~= &amp;#039;lang&amp;#039; and not k:find(&amp;#039;^lang_&amp;#039;) then&lt;br /&gt;
			local num = k:match(&amp;#039;%d+$&amp;#039;)&lt;br /&gt;
			if num then&lt;br /&gt;
				local i = tonumber(num)&lt;br /&gt;
				if not rows[i] then&lt;br /&gt;
					rows[i] = {}&lt;br /&gt;
				end&lt;br /&gt;
				rows[i][k:sub(1, #num * -1 - 1)] = v&lt;br /&gt;
			else&lt;br /&gt;
				if not rows[1] then&lt;br /&gt;
					rows[1] = {}&lt;br /&gt;
				end&lt;br /&gt;
				rows[1][k] = v&lt;br /&gt;
			end&lt;br /&gt;
			hasDialects = hasDialects or k:find(&amp;#039;^dialect%d*$&amp;#039;) and true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	mw.logObject(rows)&lt;br /&gt;
	&lt;br /&gt;
	local langName = args.lang_name&lt;br /&gt;
	local langLink = args.lang_link&lt;br /&gt;
	if langName and langLink then&lt;br /&gt;
		langLink = string.format(&amp;#039;[[%s|%s]]&amp;#039;, langLink, langName)&lt;br /&gt;
	elseif langName and args.lang then&lt;br /&gt;
		langLink = mw.ustring.gsub(&lt;br /&gt;
			getLangLink(args.lang),&lt;br /&gt;
			&amp;#039;|.+%]%]$&amp;#039;,&lt;br /&gt;
			&amp;#039;|&amp;#039; .. langName .. &amp;#039;]]&amp;#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	langLink = langLink or args.lang and getLangLink(args.lang)&lt;br /&gt;
	langName = langName or mw.ustring.match(langLink, &amp;#039;|(.+)%]%]$&amp;#039;)&lt;br /&gt;
	langLink = langLink or string.format(&amp;#039;[[%s language|%s]]&amp;#039;, langName, langName)&lt;br /&gt;
	local langCrossRef = makeCrossRef(args.lang_crossref)&lt;br /&gt;
	local hasLangCrossRef = langCrossRef and true&lt;br /&gt;
	&lt;br /&gt;
	local root = mw.html.create(&amp;#039;&amp;#039;)&lt;br /&gt;
	local tr = root:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	local langCell = tr:tag(&amp;#039;td&amp;#039;):wikitext(langLink, args.lang_ref)&lt;br /&gt;
	if not hasDialects then&lt;br /&gt;
		langCell:attr(&amp;#039;colspan&amp;#039;, 2)&lt;br /&gt;
	end&lt;br /&gt;
	if #rows &amp;gt; 1 then&lt;br /&gt;
		langCell:attr(&amp;#039;rowspan&amp;#039;, #rows)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local prevCells, prevNote = {}&lt;br /&gt;
	for i, t in ipairs(rows) do&lt;br /&gt;
		if i ~= 1 then&lt;br /&gt;
			tr = root:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if hasDialects then&lt;br /&gt;
			if prevCells.dialect and t.dialect == &amp;#039;inherit&amp;#039; then&lt;br /&gt;
				incrementRowspan(prevCells.dialect)&lt;br /&gt;
			else&lt;br /&gt;
				prevCells.dialect = tr:tag(&amp;#039;td&amp;#039;):wikitext(t.dialect, t.ref)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			langCell:wikitext(t.ref)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if prevCells.word and t.word == &amp;#039;inherit&amp;#039; then&lt;br /&gt;
			incrementRowspan(prevCells.word)&lt;br /&gt;
		elseif t.word then&lt;br /&gt;
			local word = t.word&lt;br /&gt;
			do&lt;br /&gt;
				local link = t.word_link&lt;br /&gt;
				if not link then&lt;br /&gt;
					local title = mw.title.new(langName .. &amp;#039; orthography&amp;#039;)&lt;br /&gt;
					if title.exists then&lt;br /&gt;
						local redirect = title.redirectTarget&lt;br /&gt;
						link = redirect and redirect.fullText or title.fullText&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				if link and link ~= &amp;#039;none&amp;#039; then&lt;br /&gt;
					word = string.format(&amp;#039;[[%s|%s]]&amp;#039;, link, word)&lt;br /&gt;
				end&lt;br /&gt;
				local lang = t.word_lang or args.lang&lt;br /&gt;
				if lang then&lt;br /&gt;
					local args = { lang, word, rtl = t.word_rtl or t.rtl }&lt;br /&gt;
					if lang == &amp;#039;en&amp;#039; then&lt;br /&gt;
						args.italic = &amp;#039;yes&amp;#039;&lt;br /&gt;
					end&lt;br /&gt;
					word = curFrame:expandTemplate{&lt;br /&gt;
						title = &amp;#039;Template:Lang&amp;#039;,&lt;br /&gt;
						args = args&lt;br /&gt;
					}&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local alt = t.word_alt&lt;br /&gt;
			if alt then&lt;br /&gt;
				local link = t.word_alt_link&lt;br /&gt;
				if link and link ~= &amp;#039;none&amp;#039; then&lt;br /&gt;
					alt = string.format(&amp;#039;[[%s|%s]]&amp;#039;, link, alt)&lt;br /&gt;
				end&lt;br /&gt;
				local lang = t.word_alt_lang or args.lang&lt;br /&gt;
				if lang then&lt;br /&gt;
					alt = curFrame:expandTemplate{&lt;br /&gt;
						title = &amp;#039;Template:Lang&amp;#039;,&lt;br /&gt;
						args = { lang, alt, rtl = t.word_alt_rtl or t.rtl }&lt;br /&gt;
					}&lt;br /&gt;
				end&lt;br /&gt;
				word = word .. &amp;#039; / &amp;#039; .. alt&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local translit = t.translit&lt;br /&gt;
			if translit then&lt;br /&gt;
				local link = t.translit_link&lt;br /&gt;
				if link and link ~= &amp;#039;none&amp;#039; then&lt;br /&gt;
					translit = string.format(&amp;#039;[[%s|%s]]&amp;#039;, link, translit)&lt;br /&gt;
				end&lt;br /&gt;
				local lang = t.word_lang or args.lang&lt;br /&gt;
				if lang then&lt;br /&gt;
					translit = curFrame:expandTemplate{&lt;br /&gt;
						title = &amp;#039;Template:Transl&amp;#039;,&lt;br /&gt;
						args = { lang, translit }&lt;br /&gt;
					}&lt;br /&gt;
				end&lt;br /&gt;
				word = word .. &amp;#039; / &amp;#039; .. translit&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			prevCells.word = tr:tag(&amp;#039;td&amp;#039;):wikitext(word)&lt;br /&gt;
		else&lt;br /&gt;
			if not t.ipa and t.meaning then&lt;br /&gt;
				tr:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
			prevCells.word = nil&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if prevCells.ipa and t.ipa == &amp;#039;inherit&amp;#039; then&lt;br /&gt;
			incrementRowspan(prevCells.ipa)&lt;br /&gt;
		elseif t.ipa then&lt;br /&gt;
			local ipa = &amp;#039;[&amp;#039; .. t.ipa .. &amp;#039;]&amp;#039;&lt;br /&gt;
			ipa = t.audio and curFrame:expandTemplate{&lt;br /&gt;
				title = &amp;#039;Template:Audio-IPA&amp;#039;,&lt;br /&gt;
				args = { t.audio, ipa }&lt;br /&gt;
			} or curFrame:expandTemplate{&lt;br /&gt;
				title = &amp;#039;Template:IPA&amp;#039;,&lt;br /&gt;
				args = { ipa }&lt;br /&gt;
			}&lt;br /&gt;
			prevCells.ipa = tr:tag(&amp;#039;td&amp;#039;):wikitext(ipa)&lt;br /&gt;
			if not t.word then&lt;br /&gt;
				prevCells.ipa:attr(&amp;#039;colspan&amp;#039;, 2):css(&amp;#039;text-align&amp;#039;, &amp;#039;center&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			if t.word or t.meaning then&lt;br /&gt;
				tr:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
			else&lt;br /&gt;
				tr:tag(&amp;#039;td&amp;#039;):attr(&amp;#039;colspan&amp;#039;, 3):wikitext(curFrame:expandTemplate{&lt;br /&gt;
					title = &amp;#039;Template:Example needed&amp;#039;&lt;br /&gt;
				})&lt;br /&gt;
			end&lt;br /&gt;
			prevCells.ipa = nil&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if prevCells.meaning and t.meaning == &amp;#039;inherit&amp;#039; then&lt;br /&gt;
			incrementRowspan(prevCells.meaning)&lt;br /&gt;
		elseif t.meaning then&lt;br /&gt;
			prevCells.meaning = tr:tag(&amp;#039;td&amp;#039;):wikitext(&amp;quot;&amp;#039;&amp;quot; ..t.meaning .. &amp;quot;&amp;#039;&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			if t.word or t.ipa then&lt;br /&gt;
				tr:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
			prevCells.meaning = nil		&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local crossRef = makeCrossRef(t.crossref) or langCrossRef&lt;br /&gt;
		if not crossRef and not hasLangCrossRef then&lt;br /&gt;
			langCrossRef = makeCrossRef(langName .. &amp;#039; phonology&amp;#039;, true)&lt;br /&gt;
			hasLangCrossRef = true&lt;br /&gt;
			crossRef = langCrossRef&lt;br /&gt;
		end&lt;br /&gt;
		local note = (t.note or &amp;#039;&amp;#039;) .. (crossRef or &amp;#039;&amp;#039;)&lt;br /&gt;
		if prevCells.note and (t.note == &amp;#039;inherit&amp;#039; or note == prevNote) then&lt;br /&gt;
			incrementRowspan(prevCells.note)&lt;br /&gt;
		else&lt;br /&gt;
			prevCells.note = tr:tag(&amp;#039;td&amp;#039;):wikitext(note)&lt;br /&gt;
		end&lt;br /&gt;
		prevNote = note ~= &amp;#039;&amp;#039; and note&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- return mw.text.nowiki(tostring(root))&lt;br /&gt;
	return root&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	curFrame = frame&lt;br /&gt;
	local args = {}&lt;br /&gt;
	-- for k, v in pairs(frame:getParent().args) do&lt;br /&gt;
	for k, v in pairs(frame.args or frame:getParent().args) do&lt;br /&gt;
		if v and v ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Legoktm</name></author>
	</entry>
</feed>