Чулацаман тӀегӀо

Модуль:GetLabel

ХӀокху модулах лаьцна хааман Модуль:GetLabel/doc агӀо кхолла мега

local p = {}

function p.main(frame)
    local id = frame.args.id or frame.args[1]
    local property = frame.args.property or frame.args[2]
    local lang = frame.args.lang or 'ce'

    if not id or id == '' then
        id = mw.wikibase.getEntityIdForCurrentPage()
    end
    if not id or not property or property == '' then return '' end

    local entity = mw.wikibase.getEntity(id)
    if not entity or not entity.claims or not entity.claims[property] then return '' end

    local claim = entity.claims[property][1]
    if not claim or not claim.mainsnak or not claim.mainsnak.datavalue then return '' end

    local targetId = claim.mainsnak.datavalue.value.id
    if not targetId then return '' end

    local targetEntity = mw.wikibase.getEntity(targetId)
    if not targetEntity or not targetEntity.labels then return '' end

    local label = targetEntity.labels[lang] and targetEntity.labels[lang].value
              or targetEntity.labels.ru and targetEntity.labels.ru.value
              or targetEntity.labels.en and targetEntity.labels.en.value
              or ''

    repeat
        label, count = mw.ustring.gsub(label, "%s*%b()", "")
    until count == 0

    local sitelink = mw.wikibase.getSitelink(targetId)
    if not sitelink then return label end

    return string.format('[[%s|%s]]', sitelink, label)
end

return p