
![]() | Dieses Modul ist als veraltet, eingestuft. Es sollte nicht mehr benutzt werden. In der Regel gibt es dafür ein neu entwickeltes Modul. |
Hinweise
- Die obige Dokumentation wurde aus der Seite Modul:Wikidata/Doku eingefügt. (bearbeiten | Versionsgeschichte) Die Kategorien für dieses Modul sollten in der Dokumentation eingetragen werden. Die Interwiki-Links sollten auf Wikidata eingepflegt werden.
- Liste der Unterseiten
local i18n = { ["errors"] = { ["property-param-not-provided"] = "Property parameter not provided.", ["entity-not-found"] = "Entity not found.", ["unknown-claim-type"] = "Unknown claim type.", ["unknown-snak-type"] = "Unknown snak type.", ["unknown-datavalue-type"] = "Unknown datavalue type.", ["unknown-entity-type"] = "Unknown entity type.", ["unknown-value-module"] = "You must set both value-module and value-function parameters.", ["value-module-not-found"] = "The module pointed by value-module not found.", ["value-function-not-found"] = "The function pointed by value-function not found." }, ["somevalue"] = "''unknown value''", ["novalue"] = "''no value''" } function getEntityFromId( id ) if id then return mw.wikibase.getEntityObject( id ) end return mw.wikibase.getEntityObject() end function getEntityIdFromValue( value ) local prefix = '' if value['entity-type'] == 'item' then prefix = 'Q' elseif value['entity-type'] == 'property' then prefix = 'P' else return formatError( 'unknown-entity-type' ) end return prefix .. value['numeric-id'] end function formatError( key ) return '<span class="error">' .. i18n.errors[key] .. '</span>' end function formatStatements( options ) if not options.property then return formatError( 'property-param-not-provided' ) end --Get entity local entity = getEntityFromId( options.entityId ) if not entity then return -- formatError( 'entity-not-found' ) end if (entity.claims == nil) or (not entity.claims[string.upper(options.property)]) then return '' --TODO error? end --Format statement and concat them cleanly local formattedStatements = {} for i, statement in pairs( entity.claims[string.upper(options.property)] ) do table.insert( formattedStatements, formatStatement( statement, options ) ) end return mw.text.listToText( formattedStatements, options.separator, options.conjunction ) end function formatStatement( statement, options ) if not statement.type or statement.type ~= 'statement' then return formatError( 'unknown-claim-type' ) end return formatSnak( statement.mainsnak, options ) --TODO reference and qualifiers end function formatSnak( snak, options ) if snak.snaktype == 'somevalue' then return i18n['somevalue'] elseif snak.snaktype == 'novalue' then return i18n['novalue'] elseif snak.snaktype == 'value' then return formatDatavalue( snak.datavalue, options ) else return formatError( 'unknown-snak-type' ) end end function formatDatavalue( datavalue, options ) --Use the customize handler if provided if options['value-module'] or options['value-function'] then if not options['value-module'] or not options['value-function'] then return formatError( 'unknown-value-module' ) end local formatter = require ('Module:' .. options['value-module']) if formatter == nil then return formatError( 'value-module-not-found' ) end local fun = formatter[options['value-function']] if fun == nil then return formatError( 'value-function-not-found' ) end return fun( datavalue.value, options ) end --Default formatters if datavalue.type == 'wikibase-entityid' then return formatEntityId( getEntityIdFromValue( datavalue.value ), options ) elseif datavalue.type == 'string' then return datavalue.value --TODO ids + media elseif datavalue.type == 'quantity' then return tonumber(datavalue.value.amount) else return formatError( 'unknown-datavalue-type' ) end end function formatEntityId( entityId, options ) local label = mw.wikibase.label( entityId ) local link = mw.wikibase.sitelink( entityId ) if link then if label then return '[[' .. link .. '|' .. label .. ']]' else return '[[' .. link .. ']]' end else return label --TODO what if no links and label + fallback language? end end local p = {} function p.formatStatements( frame ) local args = frame.args --If a value if already set, use it if args.value and args.value ~= '' then return args.value end return formatStatements( frame.args ) end function p.formatStatementsIntern ( args ) return formatStatements( args ) end function p.getID () entity = mw.wikibase.getEntityObject() if ( entity ~= nil ) then return entity.id else return '' end end return p