<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="nn">
	<id>https://www.ivaraasen.no/wiki/index.php?action=history&amp;feed=atom&amp;title=Modul%3Akyn_og_tal</id>
	<title>Modul:kyn og tal - Endringshistorikk</title>
	<link rel="self" type="application/atom+xml" href="https://www.ivaraasen.no/wiki/index.php?action=history&amp;feed=atom&amp;title=Modul%3Akyn_og_tal"/>
	<link rel="alternate" type="text/html" href="https://www.ivaraasen.no/wiki/index.php?title=Modul:kyn_og_tal&amp;action=history"/>
	<updated>2026-05-02T13:00:41Z</updated>
	<subtitle>Endringshistorikk for denne sida på wikien</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://www.ivaraasen.no/wiki/index.php?title=Modul:kyn_og_tal&amp;diff=5533&amp;oldid=prev</id>
		<title>Eiliv: Tek burt</title>
		<link rel="alternate" type="text/html" href="https://www.ivaraasen.no/wiki/index.php?title=Modul:kyn_og_tal&amp;diff=5533&amp;oldid=prev"/>
		<updated>2021-05-31T01:22:25Z</updated>

		<summary type="html">&lt;p&gt;Tek burt&lt;/p&gt;
&lt;a href=&quot;https://www.ivaraasen.no/wiki/index.php?title=Modul:kyn_og_tal&amp;amp;diff=5533&amp;amp;oldid=5532&quot;&gt;Sjå skilnader&lt;/a&gt;</summary>
		<author><name>Eiliv</name></author>
	</entry>
	<entry>
		<id>https://www.ivaraasen.no/wiki/index.php?title=Modul:kyn_og_tal&amp;diff=5532&amp;oldid=prev</id>
		<title>Eiliv: Teke frå Wikipedia</title>
		<link rel="alternate" type="text/html" href="https://www.ivaraasen.no/wiki/index.php?title=Modul:kyn_og_tal&amp;diff=5532&amp;oldid=prev"/>
		<updated>2021-05-31T01:21:39Z</updated>

		<summary type="html">&lt;p&gt;Teke frå Wikipedia&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny side&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local export = {}&lt;br /&gt;
local codes = {}&lt;br /&gt;
codes[&amp;quot;?&amp;quot;] = {type = &amp;quot;anna&amp;quot;, display = &amp;#039;&amp;lt;abbr title=&amp;quot;ukjent kyn&amp;quot;&amp;gt;?&amp;lt;/abbr&amp;gt;&amp;#039;}&lt;br /&gt;
-- Kyn&lt;br /&gt;
codes[&amp;quot;m&amp;quot;] = {type = &amp;quot;kyn&amp;quot;, cat = &amp;quot;hannkyn POS&amp;quot;, display = &amp;#039;&amp;lt;abbr title=&amp;quot;hannkyn&amp;quot;&amp;gt;ha&amp;lt;/abbr&amp;gt;&amp;#039;}&lt;br /&gt;
codes[&amp;quot;ha&amp;quot;] = {type = &amp;quot;kyn&amp;quot;, cat = &amp;quot;hannkyn POS&amp;quot;, display = &amp;#039;&amp;lt;abbr title=&amp;quot;hannkyn&amp;quot;&amp;gt;ha&amp;lt;/abbr&amp;gt;&amp;#039;}&lt;br /&gt;
codes[&amp;quot;f&amp;quot;] = {type = &amp;quot;kyn&amp;quot;, cat = &amp;quot;hokyn POS&amp;quot;, display = &amp;#039;&amp;lt;abbr title=&amp;quot;hokyn&amp;quot;&amp;gt;ho&amp;lt;/abbr&amp;gt;&amp;#039;}&lt;br /&gt;
codes[&amp;quot;ho&amp;quot;] = {type = &amp;quot;kyn&amp;quot;, cat = &amp;quot;hokyn POS&amp;quot;, display = &amp;#039;&amp;lt;abbr title=&amp;quot;hokyn&amp;quot;&amp;gt;ho&amp;lt;/abbr&amp;gt;&amp;#039;}&lt;br /&gt;
codes[&amp;quot;n&amp;quot;] = {type = &amp;quot;kyn&amp;quot;, cat = &amp;quot;neuter POS&amp;quot;, display = &amp;#039;&amp;lt;abbr title=&amp;quot;inkjekyn&amp;quot;&amp;gt;in&amp;lt;/abbr&amp;gt;&amp;#039;}&lt;br /&gt;
codes[&amp;quot;in&amp;quot;] = {type = &amp;quot;kyn&amp;quot;, cat = &amp;quot;neuter POS&amp;quot;, display = &amp;#039;&amp;lt;abbr title=&amp;quot;inkjekyn&amp;quot;&amp;gt;in&amp;lt;/abbr&amp;gt;&amp;#039;}&lt;br /&gt;
-- Tal&lt;br /&gt;
codes[&amp;quot;s&amp;quot;] = {type = &amp;quot;tal&amp;quot;, display = &amp;#039;&amp;lt;abbr title=&amp;quot;eintal&amp;quot;&amp;gt;et&amp;lt;/abbr&amp;gt;&amp;#039;}&lt;br /&gt;
codes[&amp;quot;et&amp;quot;] = {type = &amp;quot;tal&amp;quot;, display = &amp;#039;&amp;lt;abbr title=&amp;quot;eintal&amp;quot;&amp;gt;et&amp;lt;/abbr&amp;gt;&amp;#039;}&lt;br /&gt;
codes[&amp;quot;d&amp;quot;] = {type = &amp;quot;tal&amp;quot;, cat = &amp;quot;dualia tantum&amp;quot;, display = &amp;#039;&amp;lt;abbr title=&amp;quot;tvotal&amp;quot;&amp;gt;tt&amp;lt;/abbr&amp;gt;&amp;#039;}&lt;br /&gt;
codes[&amp;quot;tt&amp;quot;] = {type = &amp;quot;tal&amp;quot;, cat = &amp;quot;dualia tantum&amp;quot;, display = &amp;#039;&amp;lt;abbr title=&amp;quot;tvotal&amp;quot;&amp;gt;tt&amp;lt;/abbr&amp;gt;&amp;#039;}&lt;br /&gt;
codes[&amp;quot;p&amp;quot;] = {type = &amp;quot;tal&amp;quot;, cat = &amp;quot;pluralia tantum&amp;quot;, display = &amp;#039;&amp;lt;abbr title=&amp;quot;mangtal&amp;quot;&amp;gt;mt&amp;lt;/abbr&amp;gt;&amp;#039;}&lt;br /&gt;
codes[&amp;quot;mt&amp;quot;] = {type = &amp;quot;tal&amp;quot;, cat = &amp;quot;pluralia tantum&amp;quot;, display = &amp;#039;&amp;lt;abbr title=&amp;quot;mangtal&amp;quot;&amp;gt;mt&amp;lt;/abbr&amp;gt;&amp;#039;}&lt;br /&gt;
&lt;br /&gt;
local combined_codes = {}&lt;br /&gt;
combined_codes[&amp;quot;mf&amp;quot;] = {codes = {&amp;quot;m&amp;quot;, &amp;quot;f&amp;quot;}}&lt;br /&gt;
combined_codes[&amp;quot;haho&amp;quot;] = {codes = {&amp;quot;m&amp;quot;, &amp;quot;f&amp;quot;}}&lt;br /&gt;
combined_codes[&amp;quot;mfbysense&amp;quot;] = {codes = {&amp;quot;m&amp;quot;, &amp;quot;f&amp;quot;}, cat = &amp;quot;hannkyn og hokyn POS etter kjensla&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
local codetype_cats = {}&lt;br /&gt;
codetype_cats[&amp;quot;kyn&amp;quot;] = &amp;quot;POS med fleire kyn&amp;quot;&lt;br /&gt;
&lt;br /&gt;
function export.show_list(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local lang = args[&amp;quot;lang&amp;quot;]; if lang == &amp;quot;&amp;quot; then lang = nil end&lt;br /&gt;
	local list = {}&lt;br /&gt;
	local i = 1&lt;br /&gt;
	&lt;br /&gt;
	while args[i] and args[i] ~= &amp;quot;&amp;quot; do&lt;br /&gt;
		table.insert(list, args[i])&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return export.format_list(list, lang)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.format_list(specs, lang, pos_for_cat, sort_key)&lt;br /&gt;
	local text, cats = export.format_kyns(specs, lang, pos_for_cat)&lt;br /&gt;
	if #cats == 0 then&lt;br /&gt;
		return text&lt;br /&gt;
	end&lt;br /&gt;
	return text .. require(&amp;quot;Module:utilities&amp;quot;).format_categories(cats, lang, sort_key)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.format_kyns(specs, lang, pos_for_cat)&lt;br /&gt;
	local formatted_specs = {}&lt;br /&gt;
	local categories = {}&lt;br /&gt;
	local seen_types = {}&lt;br /&gt;
	local category_text = &amp;quot;&amp;quot;&lt;br /&gt;
	local all_is_nounclass = nil&lt;br /&gt;
&lt;br /&gt;
	local function do_kyn_spec(spec, parts)&lt;br /&gt;
		local types = {}&lt;br /&gt;
&lt;br /&gt;
		for key, code in ipairs(parts) do&lt;br /&gt;
			if not codes[code] then&lt;br /&gt;
				error(&amp;#039;The tag &amp;quot;&amp;#039; .. code .. &amp;#039;&amp;quot; in the gender specification &amp;quot;&amp;#039; .. spec.spec .. &amp;#039;&amp;quot; is not valid.&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local typ = codes[code].type&lt;br /&gt;
			if typ ~= &amp;quot;other&amp;quot; and types[typ] then&lt;br /&gt;
				error(&amp;#039;The gender specification &amp;quot;&amp;#039; .. spec.spec .. &amp;#039;&amp;quot; contains multiple tags of type &amp;quot;&amp;#039; .. typ .. &amp;#039;&amp;quot;.&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
			types[typ] = true&lt;br /&gt;
				&lt;br /&gt;
			if spec.qualifiers and #spec.qualifiers &amp;gt; 0 then&lt;br /&gt;
				parts[key] = require(&amp;quot;Module:qualifier&amp;quot;).format_qualifier(spec.qualifiers) .. &amp;quot; &amp;quot; .. codes[code].display&lt;br /&gt;
			else&lt;br /&gt;
				parts[key] = codes[code].display&lt;br /&gt;
			end&lt;br /&gt;
		&lt;br /&gt;
			if lang and pos_for_cat then&lt;br /&gt;
				local cat = codes[code].cat&lt;br /&gt;
				if cat then&lt;br /&gt;
					table.insert(categories, lang:getCanonicalName() .. &amp;quot; &amp;quot; .. cat)&lt;br /&gt;
				end&lt;br /&gt;
				if seen_types[typ] and seen_types[typ] ~= code then&lt;br /&gt;
					cat = codetype_cats[typ]&lt;br /&gt;
					if cat then&lt;br /&gt;
						table.insert(categories, lang:getCanonicalName() .. &amp;quot; &amp;quot; .. cat)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				seen_types[typ] = code&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if #parts == 1 then&lt;br /&gt;
			return parts[1]&lt;br /&gt;
		end&lt;br /&gt;
		return table.concat(parts, &amp;quot;&amp;amp;nbsp;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, spec in ipairs(specs) do&lt;br /&gt;
		if type(spec) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
			spec = {spec = spec}&lt;br /&gt;
		end&lt;br /&gt;
		local is_nounclass&lt;br /&gt;
		if spec.spec:find(&amp;quot;^[1-9]&amp;quot;) or spec.spec:find(&amp;quot;^c[^-]&amp;quot;) then&lt;br /&gt;
			is_nounclass = true&lt;br /&gt;
			code = spec.spec:gsub(&amp;quot;^c&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			local text&lt;br /&gt;
			if code == &amp;quot;?&amp;quot; then&lt;br /&gt;
				text = &amp;#039;&amp;lt;abbr class=&amp;quot;noun-class&amp;quot; title=&amp;quot;noun class missing&amp;quot;&amp;gt;?&amp;lt;/abbr&amp;gt;&amp;#039;&lt;br /&gt;
			else&lt;br /&gt;
				text = &amp;#039;&amp;lt;abbr class=&amp;quot;noun-class&amp;quot; title=&amp;quot;noun class &amp;#039; .. code .. &amp;#039;&amp;quot;&amp;gt;&amp;#039; .. code .. &amp;quot;&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
				if lang and pos_for_cat then&lt;br /&gt;
					table.insert(categories, lang:getCanonicalName() .. &amp;quot; class &amp;quot; .. code .. &amp;quot; POS&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			local text_with_qual&lt;br /&gt;
			if spec.qualifiers and #spec.qualifiers &amp;gt; 0 then&lt;br /&gt;
				text_with_qual = require(&amp;quot;Module:qualifier&amp;quot;).format_qualifier(spec.qualifiers) .. &amp;quot; &amp;quot; .. text&lt;br /&gt;
			else&lt;br /&gt;
				text_with_qual = text&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(formatted_specs, text_with_qual)&lt;br /&gt;
		else&lt;br /&gt;
			local parts = mw.text.split(spec.spec, &amp;quot;%-&amp;quot;)&lt;br /&gt;
			local extra_cats = {}&lt;br /&gt;
&lt;br /&gt;
			local has_combined = false&lt;br /&gt;
			for _, code in ipairs(parts) do&lt;br /&gt;
				if combined_codes[code] then&lt;br /&gt;
					has_combined = true&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if not has_combined then&lt;br /&gt;
				table.insert(formatted_specs, do_kyn_spec(spec, parts))&lt;br /&gt;
			else&lt;br /&gt;
				local all_parts = {{}}&lt;br /&gt;
&lt;br /&gt;
				for i, code in ipairs(parts) do&lt;br /&gt;
					if combined_codes[code] then&lt;br /&gt;
						local new_all_parts = {}&lt;br /&gt;
						for _, one_parts in ipairs(all_parts) do&lt;br /&gt;
							for _, one_code in ipairs(combined_codes[code].codes) do&lt;br /&gt;
								local new_combined_parts = mw.clone(one_parts)&lt;br /&gt;
								table.insert(new_combined_parts, one_code)&lt;br /&gt;
								table.insert(new_all_parts, new_combined_parts)&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
						all_parts = new_all_parts&lt;br /&gt;
						if lang and pos_for_cat then&lt;br /&gt;
							local extra_cat = combined_codes[code].cat&lt;br /&gt;
							if extra_cat then&lt;br /&gt;
								table.insert(extra_cats, lang:getCanonicalName() .. &amp;quot; &amp;quot; .. extra_cat)&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						for _, one_parts in ipairs(all_parts) do&lt;br /&gt;
							table.insert(one_parts, code)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				for _, parts in ipairs(all_parts) do&lt;br /&gt;
					table.insert(formatted_specs, do_kyn_spec(spec, parts))&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if #extra_cats &amp;gt; 0 then&lt;br /&gt;
				for _, cat in ipairs(extra_cats) do&lt;br /&gt;
					table.insert(categories, cat)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if lang then&lt;br /&gt;
				if spec.spec:find(&amp;quot;?&amp;quot;) then&lt;br /&gt;
					table.insert(categories, &amp;quot;Requests for kyn in &amp;quot; .. lang:getCanonicalName() .. &amp;quot; entries&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			is_nounclass = false&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if all_is_nounclass == nil then&lt;br /&gt;
			all_is_nounclass = is_nounclass&lt;br /&gt;
		elseif all_is_nounclass ~= is_nounclass then&lt;br /&gt;
			error(&amp;quot;Noun classes and kyns cannot be mixed. Please use either one or the other.&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if lang and pos_for_cat then&lt;br /&gt;
		for i, cat in ipairs(categories) do&lt;br /&gt;
			categories[i] = cat:gsub(&amp;quot;POS&amp;quot;, pos_for_cat)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_nounclass then&lt;br /&gt;
		return &amp;#039;&amp;lt;i&amp;gt;class &amp;#039; .. table.concat(formatted_specs, &amp;quot;/&amp;quot;) .. &amp;quot;&amp;lt;/i&amp;gt;&amp;quot;, categories&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;&amp;lt;i&amp;gt;&amp;#039; .. table.concat(formatted_specs, &amp;quot; eller &amp;quot;) .. &amp;quot;&amp;lt;/i&amp;gt;&amp;quot;, categories&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Eiliv</name></author>
	</entry>
</feed>