Дакументацыю да гэтага модуля можна стварыць у Модуль:Wikidata/item/Дакументацыя
local WDS = require( 'Module:WikidataSelectors' ); local p = {}; local categoryLinksToEntitiesWithMissingLabel = '[[Катэгорыя:Вікіпедыя:Артыкулы са спасылкамі на элементы Вікіданых без беларускага подпісу]]'; local function getGenderLabelForEntityId( entityId, isFemale ) if not isFemale then return mw.wikibase.label( entityId ); end local entity = mw.wikibase.getEntity( entityId ); if not entity.claims or not entity.claims.P2521 then return entity:getLabel(); end local femLabels = WDS.filterByLanguage( WDS.filterByRank( entity.claims.P2521, 'deprecated', true ), 'be' ); if femLabels ~= nil and femLabels[1] and femLabels[1].mainsnak and femLabels[1].mainsnak.datavalue and femLabels[1].mainsnak.datavalue.value and femLabels[1].mainsnak.datavalue.value.text then return femLabels[1].mainsnak.datavalue.value.text; end return entity:getLabel(); end local function formatOccupationLinkForEntityId( entityId, isFemale ) local label = getGenderLabelForEntityId( entityId, isFemale ); -- first try to link to occupation article local link = mw.wikibase.sitelink( entityId ) if link and not label then label = link end -- if we don't have article for occupation, try to link to field of occupation if not link then local fooEntity = mw.wikibase.getEntity( entityId ); if fooEntity and fooEntity.claims and fooEntity.claims.P425 then fooEntity = WDS.filterByRank( fooEntity.claims.P425, 'deprecated', true ); if fooEntity ~= nil and fooEntity[1] and fooEntity[1].mainsnak and fooEntity[1].mainsnak.datavalue and fooEntity[1].mainsnak.datavalue.value and fooEntity[1].mainsnak.datavalue.value.id then link = mw.wikibase.sitelink( fooEntity[1].mainsnak.datavalue.value.id ); end end end -- no article about occupation or field, link to wikidata if not link then link = ':d:' .. entityId end if label then return '[[' .. link .. '|' .. label .. ']]' end -- паведамленне пра адсутнасць лакалізаванай назвы -- not good, but better than nothing return '[[' .. link .. '|' .. entityId .. ']]?' .. categoryLinksToEntitiesWithMissingLabel; end function p.formatEntityWithGenderClaim( context, options, statement ) if ( not context ) then error( 'context not specified'); end; if ( not options ) then error( 'options not specified'); end; if ( not options.entity ) then error( 'options.entity is missing'); end; if ( not statement ) then error( 'statement not specified'); end; local isFemale = options.entity.claims.P21 and options.entity.claims.P21[1] and options.entity.claims.P21[1].mainsnak and options.entity.claims.P21[1].mainsnak.datavalue and options.entity.claims.P21[1].mainsnak.datavalue.value and options.entity.claims.P21[1].mainsnak.datavalue.value.id == 'Q6581072' local snak = statement.mainsnak; if snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.id then local entityId = snak.datavalue.value.id; return formatOccupationLinkForEntityId( entityId, isFemale ); end return context.formatSnak( options, snak ) end function p.applyDefaultTemplate( context, options, statement ) local snak = context.formatSnak( options, statement.mainsnak ) --References if ( options.references and snak ) then snak = snak .. context.formatRefs( options, statement ); end return snak end return p