<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Module%3ATaxobox_wikidata</id>
	<title>Module:Taxobox wikidata - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Module%3ATaxobox_wikidata"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Module:Taxobox_wikidata&amp;action=history"/>
	<updated>2026-07-02T07:11:19Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Module:Taxobox_wikidata&amp;diff=4146894&amp;oldid=prev</id>
		<title>imported&gt;Taeas 来自 2023年1月19日 (四) 15:04</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Module:Taxobox_wikidata&amp;diff=4146894&amp;oldid=prev"/>
		<updated>2023-01-19T15:04:42Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local l = {}&lt;br /&gt;
local gFrame&lt;br /&gt;
&lt;br /&gt;
local rankList = {&lt;br /&gt;
	regnum = &amp;#039;&amp;#039;,&lt;br /&gt;
	phylum = &amp;#039;&amp;#039;,&lt;br /&gt;
	classis = &amp;#039;&amp;#039;,&lt;br /&gt;
	ordo = &amp;#039;&amp;#039;,&lt;br /&gt;
	familia = &amp;#039;&amp;#039;,&lt;br /&gt;
	genus = &amp;#039;&amp;#039;,&lt;br /&gt;
	subgenus = &amp;#039;&amp;#039;,&lt;br /&gt;
	sectio = &amp;#039;&amp;#039;,&lt;br /&gt;
	species = &amp;#039;&amp;#039;,&lt;br /&gt;
	divisio = &amp;#039;&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
local binomial = &amp;#039;&amp;#039;&lt;br /&gt;
local binomialAuthority = &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local acceptableRank = {&lt;br /&gt;
	[&amp;#039;Q35409&amp;#039;] = &amp;#039;familia&amp;#039;,&lt;br /&gt;
	[&amp;#039;Q7432&amp;#039;] = &amp;#039;species&amp;#039;,&lt;br /&gt;
	[&amp;#039;Q3181348&amp;#039;] = &amp;#039;sectio&amp;#039;,&lt;br /&gt;
	[&amp;#039;Q3238261&amp;#039;] = &amp;#039;subgenus&amp;#039;,&lt;br /&gt;
	[&amp;#039;Q34740&amp;#039;] = &amp;#039;genus&amp;#039;,&lt;br /&gt;
	[&amp;#039;Q36602&amp;#039;] = &amp;#039;ordo&amp;#039;,&lt;br /&gt;
	[&amp;#039;Q37517&amp;#039;] = &amp;#039;classis&amp;#039;,&lt;br /&gt;
	[&amp;#039;Q38348&amp;#039;] = &amp;#039;phylum&amp;#039;,&lt;br /&gt;
	[&amp;#039;Q36732&amp;#039;] = &amp;#039;regnum&amp;#039;,&lt;br /&gt;
	[&amp;#039;Q334460&amp;#039;] = &amp;#039;divisio&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
local iucnCategories = {&lt;br /&gt;
	[&amp;#039;Q3350324&amp;#039;] = &amp;#039;NE&amp;#039;,&lt;br /&gt;
	[&amp;#039;Q3245245&amp;#039;] = &amp;#039;DD&amp;#039;,&lt;br /&gt;
	[&amp;#039;Q211005&amp;#039;] = &amp;#039;LC&amp;#039;,&lt;br /&gt;
	[&amp;#039;Q719675&amp;#039;] = &amp;#039;NT&amp;#039;,&lt;br /&gt;
	[&amp;#039;Q278113&amp;#039;] = &amp;#039;VU&amp;#039;,&lt;br /&gt;
	[&amp;#039;Q11394&amp;#039;] = &amp;#039;EN&amp;#039;,&lt;br /&gt;
	[&amp;#039;Q219127&amp;#039;] = &amp;#039;CR&amp;#039;,&lt;br /&gt;
	[&amp;#039;Q239509&amp;#039;] = &amp;#039;EW&amp;#039;,&lt;br /&gt;
	[&amp;#039;Q123509&amp;#039;] = &amp;#039;EX&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
local baseColors = {&lt;br /&gt;
	[&amp;#039;Animalia&amp;#039;] = &amp;#039;rgb(235,235,210)&amp;#039;,&lt;br /&gt;
	[&amp;#039;Plantae&amp;#039;] = &amp;#039;rgb(180,250,180)&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	gFrame = frame&lt;br /&gt;
	local args&lt;br /&gt;
	if frame.args[&amp;#039;direct&amp;#039;] == &amp;#039;yes&amp;#039; then args = frame.args&lt;br /&gt;
	else args = frame:getParent().args end&lt;br /&gt;
	&lt;br /&gt;
	local from = args[&amp;#039;from&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	local currName =  l.getData({&amp;#039;label&amp;#039;, from})&lt;br /&gt;
	local currTaxonName = l.getData({&amp;#039;property&amp;#039;, from, &amp;#039;P225&amp;#039;})&lt;br /&gt;
	local currRank = l.getData({&amp;#039;property&amp;#039;, &amp;#039;raw&amp;#039;, from, &amp;#039;P105&amp;#039;})&lt;br /&gt;
	local colour = &amp;#039;&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	l.setRank(currRank, currName, currTaxonName, true, args[&amp;#039;authority&amp;#039;] or &amp;#039;&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	local parent = l.getData({&amp;#039;property&amp;#039;, &amp;#039;raw&amp;#039;, from, &amp;#039;P171&amp;#039;})&lt;br /&gt;
	local parentRank = l.getData({&amp;#039;property&amp;#039;, &amp;#039;raw&amp;#039;, parent, &amp;#039;P105&amp;#039;})&lt;br /&gt;
	local preRank = currRank&lt;br /&gt;
	local maxStep = 30&lt;br /&gt;
	local step = 0&lt;br /&gt;
	while true&lt;br /&gt;
	do&lt;br /&gt;
		step = step + 1&lt;br /&gt;
		local gen = true&lt;br /&gt;
		&lt;br /&gt;
		if parent == &amp;#039;&amp;#039; or parentRank == currRank or (preRank ~= &amp;#039;&amp;#039; and parentRank == preRank)&lt;br /&gt;
		then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if parentRank == &amp;#039;&amp;#039;&lt;br /&gt;
		then&lt;br /&gt;
			gen = false&lt;br /&gt;
		else&lt;br /&gt;
			if l.isNilOrEmpty(acceptableRank[parentRank])&lt;br /&gt;
			then&lt;br /&gt;
				gen = false&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local parentTaxonName&lt;br /&gt;
		&lt;br /&gt;
		if gen&lt;br /&gt;
		then&lt;br /&gt;
			parentTaxonName = l.getData({&amp;#039;property&amp;#039;, parent, &amp;#039;P225&amp;#039;})&lt;br /&gt;
			local parentName = l.getData({&amp;#039;label&amp;#039;, parent})&lt;br /&gt;
			&lt;br /&gt;
			l.setRank(parentRank, parentName, parentTaxonName)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- 界&lt;br /&gt;
		if parentRank == &amp;#039;Q36732&amp;#039; or step &amp;gt; maxStep&lt;br /&gt;
		then&lt;br /&gt;
			colour = baseColors[parentTaxonName] or &amp;#039;&amp;#039;&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		preRank = parentRank&lt;br /&gt;
		parent = l.getData({&amp;#039;property&amp;#039;, &amp;#039;raw&amp;#039;, parent, &amp;#039;P171&amp;#039;})&lt;br /&gt;
		parentRank = l.getData({&amp;#039;property&amp;#039;, &amp;#039;raw&amp;#039;, parent, &amp;#039;P105&amp;#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local res = frame:expandTemplate{ title = &amp;#039;Taxobox/core&amp;#039;, args = {&lt;br /&gt;
		name = currName,&lt;br /&gt;
		image = l.getData({&amp;#039;property&amp;#039;, &amp;#039;raw&amp;#039;, from, &amp;#039;P18&amp;#039;}),&lt;br /&gt;
		image_caption = l.getData({&amp;#039;qualifier&amp;#039;, from, &amp;#039;P18&amp;#039;, &amp;#039;P2096&amp;#039;}),&lt;br /&gt;
		colour = colour,&lt;br /&gt;
		regnum = rankList.regnum,&lt;br /&gt;
		phylum = rankList.phylum,&lt;br /&gt;
		classis = rankList.classis,&lt;br /&gt;
		ordo = rankList.ordo,&lt;br /&gt;
		familia = rankList.familia,&lt;br /&gt;
		genus = rankList.genus,&lt;br /&gt;
		subgenus = rankList.subgenus,&lt;br /&gt;
		sectio = rankList.sectio,&lt;br /&gt;
		species = rankList.species,&lt;br /&gt;
		divisio = rankList.divisio,&lt;br /&gt;
		binomial = binomial,&lt;br /&gt;
		binomial_authority = binomialAuthority,&lt;br /&gt;
		status = iucnCategories[l.getData({&amp;#039;property&amp;#039;, &amp;#039;raw&amp;#039;, from, &amp;#039;P141&amp;#039;})] or &amp;#039;&amp;#039;,&lt;br /&gt;
		status_system = &amp;#039;iucn3.1&amp;#039;,&lt;br /&gt;
		range_map = l.getData({&amp;#039;property&amp;#039;, &amp;#039;raw&amp;#039;, from, &amp;#039;P181&amp;#039;}),&lt;br /&gt;
		range_map_caption = l.getData({&amp;#039;qualifier&amp;#039;, from, &amp;#039;P181&amp;#039;, &amp;#039;P2096&amp;#039;}),&lt;br /&gt;
		synonyms = args[&amp;#039;synonyms&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return res&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function l.getData(args)&lt;br /&gt;
	return gFrame:expandTemplate{ title = &amp;#039;Wikidata&amp;#039;, args = args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local italicList = {&lt;br /&gt;
	sectio = true,&lt;br /&gt;
	subgenus = true,&lt;br /&gt;
	genus = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function l.setRank(qid, article, taxonName, curr, authority)&lt;br /&gt;
	local rank = acceptableRank[qid]&lt;br /&gt;
	&lt;br /&gt;
	if l.isNilOrEmpty(rank)&lt;br /&gt;
	then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local link = &amp;quot;[[&amp;quot; .. article .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	local partialItalics&lt;br /&gt;
	local normal&lt;br /&gt;
	local rank = acceptableRank[qid]&lt;br /&gt;
	&lt;br /&gt;
	if curr&lt;br /&gt;
	then&lt;br /&gt;
		partialItalics = l.bold(article .. &amp;quot; &amp;quot; .. l.italic(taxonName))&lt;br /&gt;
		normal = l.bold(article .. &amp;quot; &amp;quot; .. taxonName)&lt;br /&gt;
	else&lt;br /&gt;
		partialItalics = link .. &amp;quot; &amp;quot; .. l.italic(taxonName)&lt;br /&gt;
		normal = link .. &amp;quot; &amp;quot; .. taxonName&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if rank == &amp;#039;species&amp;#039;&lt;br /&gt;
	then&lt;br /&gt;
		local displayTaxonName = l.italic(string.gsub(taxonName, &amp;#039;([%u])[%l]+ &amp;#039;, &amp;#039;%1. &amp;#039;))&lt;br /&gt;
		if curr&lt;br /&gt;
		then&lt;br /&gt;
			rankList[rank] = l.bold(article .. &amp;#039; &amp;#039; .. displayTaxonName)&lt;br /&gt;
			binomial = l.italic(taxonName)&lt;br /&gt;
			binomialAuthority = authority&lt;br /&gt;
		else&lt;br /&gt;
			rankList[rank] = link .. &amp;#039; &amp;#039; .. displayTaxonName&lt;br /&gt;
		end&lt;br /&gt;
		return&lt;br /&gt;
	elseif italicList[rank]&lt;br /&gt;
	then&lt;br /&gt;
		rankList[rank] = partialItalics&lt;br /&gt;
		return&lt;br /&gt;
	elseif rank == &amp;#039;divisio&amp;#039;&lt;br /&gt;
	then&lt;br /&gt;
		if(rankList[rank] ~= &amp;#039;&amp;#039;)&lt;br /&gt;
		then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	rankList[rank] = normal&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function l.bold(str)&lt;br /&gt;
	return &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; .. str .. &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function l.italic(str)&lt;br /&gt;
	return &amp;quot;&amp;#039;&amp;#039;&amp;quot; .. str .. &amp;quot;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function l.isNilOrEmpty(thing)&lt;br /&gt;
	if thing == nil or thing == &amp;#039;&amp;#039; then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Taeas</name></author>
	</entry>
</feed>