<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://ephemeralfilm.info/a/Module:Taxonbar/confdoc/history?feed=atom</id>
	<title>Module:Taxonbar/confdoc - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://ephemeralfilm.info/a/Module:Taxonbar/confdoc/history?feed=atom"/>
	<link rel="alternate" type="text/html" href="http://ephemeralfilm.info/a/Module:Taxonbar/confdoc/history"/>
	<updated>2026-04-06T17:10:51Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.36.2</generator>
	<entry>
		<id>http://ephemeralfilm.info/index.php?title=Module:Taxonbar/confdoc&amp;diff=37500&amp;oldid=prev</id>
		<title>JJR: 1 revision imported: auth control</title>
		<link rel="alternate" type="text/html" href="http://ephemeralfilm.info/index.php?title=Module:Taxonbar/confdoc&amp;diff=37500&amp;oldid=prev"/>
		<updated>2022-03-21T03:18:41Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported: auth control&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:18, 21 March 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>JJR</name></author>
	</entry>
	<entry>
		<id>http://ephemeralfilm.info/index.php?title=Module:Taxonbar/confdoc&amp;diff=37499&amp;oldid=prev</id>
		<title>w&gt;Jonesey95: Fix Linter errors. small tags can&#039;t wrap multiple lines.</title>
		<link rel="alternate" type="text/html" href="http://ephemeralfilm.info/index.php?title=Module:Taxonbar/confdoc&amp;diff=37499&amp;oldid=prev"/>
		<updated>2022-02-10T17:11:12Z</updated>

		<summary type="html">&lt;p&gt;Fix &lt;a href=&quot;/a/Special:LintErrors&quot; class=&quot;new&quot; title=&quot;Special:LintErrors (page does not exist)&quot;&gt;Linter&lt;/a&gt; errors. small tags can&amp;#039;t wrap multiple lines.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;Module:No globals&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local conf = require( &amp;quot;Module:Taxonbar/conf&amp;quot; ) -- configuration module&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
	&lt;br /&gt;
function p.confdoc( frame )&lt;br /&gt;
	local wikitable = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
	wikitable:addClass(&amp;#039;wikitable sortable&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;caption&amp;#039;)&lt;br /&gt;
			:wikitext(&amp;#039;Taxon identifiers by parameter name&amp;#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
		:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
				:wikitext(&amp;#039;Parameter&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
				:attr(&amp;#039;data-sort-type&amp;#039;, &amp;#039;number&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;white-space&amp;#039;, &amp;#039;nowrap&amp;#039;)&lt;br /&gt;
				:wikitext(&amp;#039;Wikidata ID&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
				:wikitext(&amp;#039;Authority&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
				:wikitext(&amp;#039;Description&amp;#039;)&lt;br /&gt;
				&lt;br /&gt;
				&lt;br /&gt;
				&lt;br /&gt;
				&lt;br /&gt;
	local format = string.format&lt;br /&gt;
	&lt;br /&gt;
	for _, db in pairs( conf.databases ) do&lt;br /&gt;
		local prop = db[3]&lt;br /&gt;
		if type(prop) == &amp;#039;number&amp;#039; and prop &amp;gt; 0 then&lt;br /&gt;
			local param = mw.ustring.lower(db[1])&lt;br /&gt;
			local row = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			row&lt;br /&gt;
				:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
					:wikitext(param)&lt;br /&gt;
				:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
					:attr(&amp;#039;data-sort-value&amp;#039;, prop)&lt;br /&gt;
					:wikitext(format(&amp;#039;[[d:Property:P%d|P%d]]&amp;#039;, prop, prop))&lt;br /&gt;
				-- {{#statements:P1629|from=P{{{1|}}}}}&lt;br /&gt;
				:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
					:wikitext(frame:callParserFunction{&lt;br /&gt;
						name = &amp;#039;#statements:P1629&amp;#039;,&lt;br /&gt;
						args = { from = &amp;#039;P&amp;#039; .. prop }&lt;br /&gt;
					})&lt;br /&gt;
				:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
					:wikitext(mw.wikibase.getDescription(&amp;#039;P&amp;#039; .. prop))&lt;br /&gt;
			wikitable:node(row)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return wikitable&lt;br /&gt;
end&lt;br /&gt;
--[[ p.wikidataInfo( frame )&lt;br /&gt;
    -function to show formatURL and id for taxonomic databases&lt;br /&gt;
]]&lt;br /&gt;
local COUNTER_MAX = 390&lt;br /&gt;
local counter = 0    --expensive parser function counter&lt;br /&gt;
&lt;br /&gt;
function p.wikidataInfo( frame )&lt;br /&gt;
	counter = frame.args[&amp;#039;counter&amp;#039;]  or COUNTER_MAX  -- prevent too many expensive calls&lt;br /&gt;
	local start = frame.args[&amp;#039;start&amp;#039;] or &amp;quot;a&amp;quot;&lt;br /&gt;
	local finish = frame.args[&amp;#039;finish&amp;#039;] or &amp;quot;zzz&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	local wikitable = &amp;#039;{| class=&amp;quot;wikitable sortable&amp;quot;\n&amp;#039; .. &lt;br /&gt;
					  &amp;#039;|-\n&amp;#039; .. &lt;br /&gt;
					  &amp;#039;! Parameter !! Wikidata ID !! Database !! Examples !! datatype !! formatterURL (or alternative) and examples&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	for _, db in pairs( conf.databases ) do&lt;br /&gt;
		local param = mw.ustring.lower(db[1])&lt;br /&gt;
		local link = db[2]&lt;br /&gt;
		local prop = db[3]&lt;br /&gt;
		local id = &amp;#039;id&amp;#039;&lt;br /&gt;
		local url = &amp;#039;url&amp;#039;&lt;br /&gt;
		local datatype = &amp;quot;&amp;quot;&lt;br /&gt;
		local examples = &amp;quot;&amp;quot;&lt;br /&gt;
		local links = &amp;quot;&amp;quot;&lt;br /&gt;
		local formatterURL = &amp;quot;&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		if type(prop) == &amp;#039;number&amp;#039; and prop &amp;gt; 0 and param &amp;gt; start and param &amp;lt; finish then&lt;br /&gt;
			local item = mw.wikibase.getEntity(&amp;#039;P&amp;#039;..prop)  --(&amp;#039;P5354&amp;#039;)&lt;br /&gt;
			counter = counter - 1&lt;br /&gt;
			&lt;br /&gt;
			if item and item ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				datatype = item.datatype&lt;br /&gt;
				local statements = item:getBestStatements(&amp;#039;P1630&amp;#039;)[1] &lt;br /&gt;
				if statements and statements.mainsnak and statements.mainsnak.datavalue and statements.mainsnak.datavalue.value then&lt;br /&gt;
					formatterURL = statements.mainsnak.datavalue.value&lt;br /&gt;
					url = formatterURL&lt;br /&gt;
				else&lt;br /&gt;
					url = &amp;quot;No formatter URL (P1630).&amp;quot;&lt;br /&gt;
					if datatype == &amp;quot;url&amp;quot; then url = url .. &amp;quot; The id of the external database is the url.&amp;quot; end&lt;br /&gt;
					local subjectItem = item:getBestStatements(&amp;#039;P1629&amp;#039;)[1]&lt;br /&gt;
					if subjectItem then&lt;br /&gt;
						local officialWebsite = mw.wikibase.getEntity(subjectItem.mainsnak.datavalue.value.id):getBestStatements(&amp;#039;P856&amp;#039;)[1]&lt;br /&gt;
						counter = counter - 1&lt;br /&gt;
						if officialWebsite then	&lt;br /&gt;
							url = url .. &amp;#039;&amp;lt;br/&amp;gt;website: &amp;#039; ..  officialWebsite.mainsnak.datavalue.value&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						url = url .. &amp;#039; or official website (P856) of wikidata item of this property (P1629)&amp;#039;&lt;br /&gt;
						-- use third-party formatter URL. e.g for  Euring number (P3459) &lt;br /&gt;
						local statements = item:getBestStatements(&amp;#039;P3459&amp;#039;)[1] &lt;br /&gt;
						if statements and statements.mainsnak and statements.mainsnak.datavalue and statements.mainsnak.datavalue.value then&lt;br /&gt;
				   			local thirdPartyURL = statements.mainsnak.datavalue.value&lt;br /&gt;
							url = url ..&amp;#039;&amp;lt;br/&amp;gt;use third party url: &amp;#039; .. thirdPartyURL&lt;br /&gt;
						else&lt;br /&gt;
							url = url .. &amp;#039; or third party formatter url (P3459) &amp;#039;&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
                examples, links =  p.getExamples( item, prop, formatterURL, datatype )&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
			wikitable = wikitable .. &amp;#039;\n&amp;#039; .. &amp;#039;|-&amp;#039; &lt;br /&gt;
					    .. &amp;#039;\n|&amp;#039; .. param &lt;br /&gt;
					    .. &amp;#039;\n|&amp;#039; .. &amp;#039;[[:d:Property:P&amp;#039; .. prop .. &amp;#039;|P&amp;#039; .. prop .. &amp;#039;]]&amp;#039; &lt;br /&gt;
					    .. &amp;#039;\n|&amp;#039; .. link&lt;br /&gt;
					    .. &amp;#039;\n|&amp;#039; .. examples&lt;br /&gt;
					    .. &amp;#039;\n|&amp;#039; .. datatype&lt;br /&gt;
					    .. &amp;#039;\n|&amp;#039; .. url  .. &amp;#039;\n{{smalldiv|1=&amp;#039; .. links  .. &amp;#039;}}&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return wikitable .. &amp;#039;\n|}&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getExamples( propItem , prop, formatterURL, datatype)&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	if counter &amp;lt; 0 then return &amp;quot;count exceeded&amp;quot; end&lt;br /&gt;
	&lt;br /&gt;
	local examples	= &amp;quot;&amp;quot;	&lt;br /&gt;
	local links	= &amp;quot;&amp;quot;	&lt;br /&gt;
	local exampleStatements = propItem:getBestStatements(&amp;#039;P1855&amp;#039;)&lt;br /&gt;
	local nExamples = 0&lt;br /&gt;
	&lt;br /&gt;
	--local statement = statements[1]&lt;br /&gt;
	for _, statement in pairs( exampleStatements ) do&lt;br /&gt;
		&lt;br /&gt;
		if nExamples == 3 then break end -- don&amp;#039;t show more than 3 examples&lt;br /&gt;
			&lt;br /&gt;
		if statement.mainsnak and statement.mainsnak.datavalue and statement.mainsnak.datavalue.value then&lt;br /&gt;
			local examplesValue = statement.mainsnak.datavalue.value&lt;br /&gt;
			if examplesValue and examplesValue.id then&lt;br /&gt;
				local exampleID = examplesValue.id&lt;br /&gt;
				--examples = examples .. &amp;#039;\n*[[:d:&amp;#039; .. exampleID  .. &amp;#039;|&amp;#039; .. exampleID ..&amp;#039;]] &amp;#039;&lt;br /&gt;
				local label = mw.wikibase.getLabel( exampleID )&lt;br /&gt;
				examples = examples .. &amp;#039;\n*[[&amp;#039; .. label .. &amp;#039;]] ([[:d:&amp;#039; .. exampleID  .. &amp;#039;|&amp;#039; .. exampleID ..&amp;#039;]])&amp;#039;&lt;br /&gt;
&lt;br /&gt;
                -- get information form qualifiers&lt;br /&gt;
                if statement.qualifiers then&lt;br /&gt;
                   local qualifiers = statement[&amp;#039;qualifiers&amp;#039;]  &lt;br /&gt;
                   local value = qualifiers[&amp;#039;P&amp;#039;..prop][1] --[&amp;#039;datavalue&amp;#039;][&amp;#039;value&amp;#039;]&lt;br /&gt;
                   --mw.addWarning (mw.wikibase.formatValues( qualifiers ))&lt;br /&gt;
                   --mw.addWarning (mw.wikibase.renderSnaks( qualifiers ))&lt;br /&gt;
                   -- mw.addWarning (mw.wikibase.formatValue( value ))&lt;br /&gt;
                   --mw.addWarning ( mw.wikibase.renderSnak( value ))&lt;br /&gt;
                   local id = mw.wikibase.renderSnak( value )&lt;br /&gt;
                   examples = examples .. &amp;#039;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;id=&amp;lt;code&amp;gt;&amp;#039; .. id .. &amp;#039;&amp;lt;/code&amp;gt;&amp;lt;/small&amp;gt;&amp;#039;&lt;br /&gt;
                   local link = formatterURL:gsub(&amp;#039;$1&amp;#039;, id)&lt;br /&gt;
                   if (datatype == &amp;quot;url&amp;quot;) then link = id end&lt;br /&gt;
                   links = links .. &amp;#039;\n*&amp;#039; .. link .. &amp;#039;&amp;#039;&lt;br /&gt;
                end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[==[		    -- this method is expensive as it calls getEntity&lt;br /&gt;
&lt;br /&gt;
		        local item = mw.wikibase.getEntity(exampleID)&lt;br /&gt;
		        counter = counter - 1&lt;br /&gt;
		        nExamples = nExamples + 1&lt;br /&gt;
		        &lt;br /&gt;
		        &lt;br /&gt;
		        if item and item ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					--datatype = item.datatype&lt;br /&gt;
					local statements = item:getBestStatements(&amp;#039;P225&amp;#039;)[1] -- taxon name&lt;br /&gt;
					if statements and statements.mainsnak and statements.mainsnak.datavalue and statements.mainsnak.datavalue.value then&lt;br /&gt;
						local taxon = statements.mainsnak.datavalue.value&lt;br /&gt;
						examples = examples .. &amp;#039; [[&amp;#039; .. taxon .. &amp;#039;]]&amp;#039;&lt;br /&gt;
					end&lt;br /&gt;
					local statements = item:getBestStatements(&amp;#039;P&amp;#039;..prop)[1] -- the databas property&lt;br /&gt;
					if statements and statements.mainsnak and statements.mainsnak.datavalue and statements.mainsnak.datavalue.value then&lt;br /&gt;
						local id = statements.mainsnak.datavalue.value&lt;br /&gt;
						local link = formatterURL:gsub(&amp;#039;$1&amp;#039;, id)&lt;br /&gt;
						if (datatype == &amp;quot;url&amp;quot;) then link = id end&lt;br /&gt;
						examples = examples .. &amp;#039; (&amp;#039; .. id .. &amp;#039;)&amp;#039;  &lt;br /&gt;
						links = links .. &amp;#039;\n*&amp;#039; .. link .. &amp;#039;&amp;#039;&lt;br /&gt;
					end&lt;br /&gt;
		end&lt;br /&gt;
]==]&lt;br /&gt;
		    else&lt;br /&gt;
		    	examples = examples .. &amp;quot;No example&amp;quot;&lt;br /&gt;
		    end&lt;br /&gt;
		else&lt;br /&gt;
			examples = examples .. &amp;quot;No examples statements&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    return examples, links&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>w&gt;Jonesey95</name></author>
	</entry>
</feed>