| 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 |