close
Sari la conținut

Modul:SDcat

De la Wikipedia, enciclopedia liberă
--[[
SDcat
Modul pentru a verifica dacă descrierea scurtă locală se potrivește cu cea de pe Wikidata
--]]

local p = {}

-------------------------------------------------------------------------------
--[[
setCat are qid-ul unei entități Wikidata pasat ca |qid=
(dacă este omis, se folosește implicit qid-ul asociat articolului curent)
și descrierea scurtă locală pasată ca |sd=
Returnează o categorie dacă există o entitate Wikidata asociată.
Returnează una dintre următoarele categorii de urmărire, după caz:
* Categorie:Descrierea scurtă se potrivește cu Wikidata (fără a ține cont de majuscule/minuscule)
* Categorie:Descrierea scurtă este diferită de Wikidata
* Categorie:Descriere scurtă cu descriere Wikidata goală
Pentru testare, un prefix de legătură |lp= poate fi setat la ":" pentru a face categoriile vizibile.
--]]

-- funcție exportată pentru utilizare în alte module
-- (descriere scurtă locală, ID-ul entității Wikidata, prefixul legăturii)
p._setCat = function(sdesc, itemID, lp)
    if not mw.wikibase then return nil end
    if itemID == "" then itemID = nil end
    -- Câmpul de descriere Wikidata
    local wdesc = (mw.wikibase.getDescription(itemID) or ""):lower()
    if wdesc == "" then
        return "[[" .. lp .. "Categorie:Descriere scurtă cu descriere Wikidata goală]]"
    elseif wdesc == sdesc then
        return "[[" .. lp .. "Categorie:Descrierea scurtă se potrivește cu Wikidata]]"
    else
        return "[[" .. lp .. "Categorie:Descrierea scurtă este diferită de Wikidata]]"
    end
end

-- funcție exportată pentru a fi apelată din #invoke
p.setCat = function(frame)
    local args
    if frame.args.sd then
        args = frame.args
    else
        args = frame:getParent().args
    end
    -- descriere scurtă locală
    local sdesc = mw.text.trim(args.sd or ""):lower()
    -- ID-ul entității Wikidata
    local itemID = mw.text.trim(args.qid or "")
    -- prefixul legăturii, elimină ghilimelele
    local lp = mw.text.trim(args.lp or ""):gsub('"', '')
    return p._setCat(sdesc, itemID, lp)
end

return p