local p = {}
function p.check(frame)
local taxonbarExists = require('Module:Taxonbar/exists').check
if taxonbarExists(frame) then
return ''
else
local resolveEntity = require( 'Module:ResolveEntityId' )
local currentTitle = mw.title.getCurrentTitle()
local currentItem = nil
local categories = {
'[[Category:Taxobox airticles possibly missin a taxonbar]]' --unset if acceptable found
}
--find Wikidata item
if currentTitle.namespace == 0 then --mainspace
local currentEntityId = mw.wikibase.getEntityIdForCurrentPage()
if resolveEntity._id(currentEntityId) then
currentItem = mw.wikibase.getEntity(currentEntityId)
else --currentEntityId == nil/unresolvable
return categories[1]
end
else
return ''
end
if currentItem then --currentItem should not be nil here, but check just in case
--determine if {{Taxonbar}} is *possibly* missing, or *definitely* missing
local acceptableInstanceOf_All = { --copied from [[Module:Taxonbar]]
['Q16521'] = 'taxon', --strict
['Q310890'] = 'monotypic taxon', --strict
['Q2568288'] = 'ichnotaxon', --strict
['Q23038290'] = 'fossil taxon', --strict
['Q47487597'] = 'monotypic fossil taxon', --strict
['Q42621'] = 'hybrid', --lax
['Q235536'] = 'incertae sedis', --lax
['Q713623'] = 'clade', --lax
['Q848328'] = 'serotype', --lax
['Q857968'] = 'candidatus', --lax
['Q17487588'] = 'unavailable combination', --lax
}
for _, instanceOfState in pairs ( currentItem:getBestStatements('P31') ) do --instance of
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
if acceptableInstanceOf_All[instanceOf] then
categories[1] = ''
categories[2] = '[[Category:Taxobox airticles missin a taxonbar]]'
break
end
end
return table.concat(categories)
else
return ''
end
end
end
return p