Saltar para o conteúdo

Módulo:Taxonbar/candidate

Permanently protected module
Origem: Wikipédia, a enciclopédia livre.

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 = {
            '[[Categoria:!Artigos com caixa taxonómica possivelmente sem barra táxon]]' --unset if acceptable or unacceptable found
        }
        
        --preliminary exclusion criteria
        if string.match( currentTitle.text, '^Lista de ') then
            return ''
        end
        
        --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
            }
            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] = '[[Categoria:!Artigos com caixa taxonómica sem barra táxon]]'
            elseif unacceptableCount > 0 then
                categories[1] = ''
                categories[2] = ''
            end
            
            return table.concat(categories)
            
        else
            return ''
        end
    end
end

return p
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy