Zum Inhalt springen

„Modul:SeitenbewertungWikidataExtern“ – Versionsunterschied

aus AufEinWort, der freien Forschung
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…
 
K Klaus verschob die Seite Modul:SeitenbewertungExtern nach Modul:SeitenbewertungWikidataExtern, ohne dabei eine Weiterleitung anzulegen
 
(kein Unterschied)

Aktuelle Version vom 3. Oktober 2026, 20:44 Uhr

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