Module:Taxonbar/candidate/sandbox explained

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 = --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.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 is *definitely* missing, *possibly* missing, or not missing at all local whitelist = require('Module:Taxonbar/whitelist').whitelist local blacklist = require('Module:Taxonbar/blacklist').blacklist local acceptableInstanceOf_All = whitelist local unacceptableInstanceOf = blacklist 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] = '' elseif unacceptableCount > 0 then categories[1] = categories[2] = end return table.concat(categories) else return end endend

return p