Line 2:
Line 2:
function p.check(frame)
function p.check(frame)
−
local taxonbarExists = require('Module:Taxonbar/exists').check
+
return ''
−
if taxonbarExists(frame) then
−
return ''
−
else
−
local resolveEntity = require( 'Module:ResolveEntityId' )
−
local currentTitle = mw.title.getCurrentTitle()
−
local currentItem = nil
−
local categories = {
−
'[[Category:Taxobox articles possibly missing a taxonbar]]' --unset if acceptable or unacceptable found
−
}
−
−
--preliminary exclusion criteria
−
if string.match( currentTitle.text, '^List of ') then
−
return ''
−
end
−
−
--find Wikidata item
−
if currentTitle.namespace == 0 then --mainspace
−
local currentEntityId = mw.ext.UnlinkedWikibase.getEntityId('enwiki')
−
if resolveEntity._id(currentEntityId) then
−
currentItem = mw.ext.UnlinkedWikibase.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
−
}
−
local unacceptableInstanceOf = {
−
['Q913170'] = 'trivial name',
−
['Q55983715'] = 'group of organisms known by one particular common name',
−
['Q937228'] = 'property',
−
['Q14712'] = 'drupe',
−
['Q163233'] = 'compound drupe',
−
['Q747463'] = 'compound fruit',
−
}
−
−
local acceptableCount = 0
−
local unacceptableCount = 0
−
for _, instanceOfState in pairs ( currentItem:getBestStatements('P31') ) do --instance of
−
local instanceOf = instanceOfState.mainsnak.datavalue.value.id
−
if acceptableInstanceOf_All[instanceOf] then
−
acceptableCount = acceptableCount + 1
−
elseif unacceptableInstanceOf[instanceOf] then
−
unacceptableCount = unacceptableCount + 1
−
end
−
end
−
for _, subclassOfState in pairs ( currentItem:getBestStatements('P279') ) do --subclass of
−
local subclassOf = subclassOfState.mainsnak.datavalue.value.id
−
if acceptableInstanceOf_All[subclassOf] then
−
acceptableCount = acceptableCount + 1
−
elseif unacceptableInstanceOf[subclassOf] then
−
unacceptableCount = unacceptableCount + 1
−
end
−
end
−
−
if acceptableCount > 0 then
−
categories[1] = ''
−
categories[2] = '[[Category:Taxobox articles missing a taxonbar]]'
−
elseif unacceptableCount > 0 then
−
categories[1] = ''
−
categories[2] = ''
−
end
−
−
return table.concat(categories)
−
−
else
−
return ''
−
end
−
end
end
end
return p
return p