Zum Inhalt springen

Modul:SeitenbewertungWikidataExtern

aus AufEinWort, der freien Forschung
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 3. Oktober 2026 um 20:41 Uhr durch Nikolaos (Diskussion | Beiträge) (AZ: Die Seite wurde neu angelegt: local p = {} -- Ergebnis: 1 = passende Auszeichnung; 0 = keine passende Auszeichnung; -- ? = Zuordnung/Abruf/Parameter noch nicht eindeutig auswertbar. -- Prueft die aktuelle Seite oder eine ausdruecklich angegebene externe id. function p.wikidataFulfils( frame ) local args = frame.args local wanted = {} for number in tostring( args.match or '' ):gmatch( '%S+' ) do if not number…). Sie kann sich erheblich von der aktuellen Version unterscheiden.
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Die Dokumentation für dieses Modul kann unter Modul:SeitenbewertungWikidataExtern/Doku erstellt werden

local p = {}

-- Ergebnis: 1 = passende Auszeichnung; 0 = keine passende Auszeichnung;
-- ? = Zuordnung/Abruf/Parameter noch nicht eindeutig auswertbar.
-- Prueft die aktuelle Seite oder eine ausdruecklich angegebene externe id.
function p.wikidataFulfils( frame )
    local args = frame.args
    local wanted = {}
    for number in tostring( args.match or '' ):gmatch( '%S+' ) do
        if not number:match( '^[1-9]%d*$' ) then
            return '?'
        end
        wanted[ 'Q' .. number ] = true
    end
    if not next( wanted ) then
        return '?'
    end

    local api = mw.ext and mw.ext.UnlinkedWikibase
    if not api or type( api.getEntity ) ~= 'function' then
        return '?'
    end
    local id = mw.text.trim( tostring( args.id or '' ) )
    if id == '' then
        if type( api.getEntityIdForCurrentPage ) ~= 'function' then
            return '?'
        end
        local ok, result = pcall( api.getEntityIdForCurrentPage )
        if not ok then
            return '?'
        end
        id = result
    end
    if type( id ) ~= 'string' or not id:match( '^Q[1-9]%d*$' ) then
        return '?'
    end

    local ok, entity = pcall( api.getEntity, id )
    if not ok or type( entity ) ~= 'table'
        or type( entity.sitelinks ) ~= 'table' then
        return '?'
    end
    local site = mw.text.trim( tostring( args.site or 'dewiki' ) )
    if site == '' then
        site = 'dewiki'
    end
    local sitelink = entity.sitelinks[ site ]
    if sitelink == nil then
        return '0'
    end
    if type( sitelink ) ~= 'table' or type( sitelink.badges ) ~= 'table' then
        return '?'
    end
    for _, badge in ipairs( sitelink.badges ) do
        if type( badge ) ~= 'string' then
            return '?'
        end
        if wanted[ badge ] then
            return '1'
        end
    end
    return '0'
end

return p