Mòdul:Criteri UKB

De la Viquipèdia, l'enciclopèdia lliure
Icona de documentació de mòdul Documentació del mòdul [ mostra ] [ modifica el codi ] [ mostra l'historial ] [ refresca ]

Mòdul Criteri UKB (codi · ús · discussió · proves · tests · casos prova | subpàgines · enllaços)

A continuació es mostra la documentació transclosa de la subpàgina /ús. [salta a la caixa de codi]



Funcionalitat de {{Criteri UKB}}.

Ús[modifica]

Codi Resultat
{{#invoke:Criteri UKB|criterion|criterion=nou}} creat durant el concurs
{{#invoke:Criteri UKB|criterion|criterion=nou|redirects=true}} creades durant el concurs (redireccions incloses)
{{#invoke:Criteri UKB|criterion|criterion=existeix}} creat abans de l'inici del concurs (pàgines existents)
{{#invoke:Criteri UKB|criterion|criterion=esborrany}} s'ha esborrat la plantilla d'esborrany
{{#invoke:Criteri UKB|criterion|criterion=bytes|1000}} ampliat amb almenys 1000 bytes
{{#invoke:Criteri UKB|criterion|criterion=espai de noms|0|10}} és un article o plantilla
{{#invoke:Criteri UKB|criterion|criterion=espai de noms|0|10|site=www.wikidata.org}} és un article o plantilla at www.wikidata.org
{{#invoke:Criteri UKB|criterion|criterion=espai de noms|0}} és un article
{{#invoke:Criteri UKB|criterion|criterion=backlink|Llista de presidents de Catalunya}} enllaçat des de Llista de presidents de Catalunya
{{#invoke:Criteri UKB|criterion|criterion=forwardlink|Bergen}} enllaç a Bergen
{{#invoke:Criteri UKB|criterion|criterion=plantilla|Millorar ortografia}} conté la plantilla {{Millorar ortografia}}
{{#invoke:Criteri UKB|criterion|criterion=plantilla|Citació necessària|Falten referències}} conté almenys una de les plantilles {{Citació necessària}} o {{Falten referències}}
{{#invoke:Criteri UKB|criterion|criterion=categoria|Islàndia}} a la categoria Islàndia
{{#invoke:Criteri UKB|criterion|criterion=categoria|Islàndia|nn:Island|se:Islánda}} Error de Lua a la línia 134: bad argument #2 to 'format' (string expected, got nil).
{{#invoke:Criteri UKB|criterion|criterion=categoria|Hominoïdeus|ignore=Humans,Hominoïdeus a la ficció}} a la categoria Hominoïdeus, però no es present a Humans o Hominoïdeus a la ficció
{{#invoke:Criteri UKB|criterion|criterion=pàgines|Islàndia|Groenlàndia}} Islàndia o Groenlàndia

Si el text generat no s'adequa a les necessitats es pot sobreescriure utilitzant |descripcio=:

Codi Resultat
{{#invoke:Criteri UKB|criterion|criterion=espai de noms|0|10|descripcio=a l'espai de noms Principal}} és un article o plantilla

uk = {}

local messages = {
    ['or'] = 'o',
    ['error_no_x_given'] = 'No inclou %s',
    ['error_no_valid_criterion_given'] = 'El criteri definit no és vàlid',

    ['templates'] = 'plantilles',
    ['template_criterion_singular'] = 'conté la plantilla %s',
    ['template_criterion_plural'] = 'conté almenys una de les plantilles %s',

    ['categories'] = 'categories',
    ['category_criterion_singular'] = 'a la categoria %s',
    ['category_criterion_plural'] = 'conté almenys una de les categories %s',
    ['category_criterion_ignore'] = ', però no es present a %s',

    ['backlinks'] = 'enllaçat',
    ['backlink_criterion_singular'] = 'enllaçat des de %s',
    ['backlink_criterion_plural'] = 'enllaçat des de %s',

    ['forwardlinks'] = 'enllaç',
    ['forwardlink_criterion_singular'] = 'enllaç a %s',
    ['forwardlink_criterion_plural'] = 'enllaços a %s',

    ['pages'] = 'pàgines',
    ['page_criterion_singular'] = '%s',
    ['page_criterion_plural'] = '%s',

    ['sparql_criterion'] = 'té un ítem a Wikidata que encaixa amb [%s aquesta consulta SPARQL]',
    ['sparql_criterion_with_explanation'] = '%s ([%s mostra consulta SPARQL])',
    ['bytes_criterion'] = 'ampliat amb almenys %s bytes',
    ['namespace_criterion_singular'] = 'és un %s',
    ['namespace_criterion_plural'] = 'és un %s',
    ['namespace_main'] = 'articles',
    ['new_criterion'] = 'creat durant el concurs',
    ['new_criterion_with_redirects'] = 'creades durant el concurs (redireccions incloses)',
    ['existing_criterion'] = 'creat abans de l\'inici del concurs (pàgines existents)',
    ['stub_criterion'] = 's\'ha esborrat la plantilla d\'esborrany',

}
local config = {
    ['template_link_template'] = 'Tl',
    ['error_message_template'] = 'Error',
    ['arguments'] = {
        ['new'] = 'nou',
        ['existing'] = 'existeix',
        ['stub'] = 'esborrany',
        ['bytes'] = 'bytes',
        ['namespace'] = 'espai de noms',
        ['category'] = 'categoria',
        ['template'] = 'plantilla',
        ['backlink'] = 'backlink',
        ['forwardlink'] = 'forwardlink',
        ['pages'] = 'pàgines',
        ['sparql'] = 'sparql',
    }
}

local category_prefix = {
    ['ca'] = 'ca:Categoria',
    ['commons'] = 'commons:Category',
    ['default'] = 'Categoria'
}

-- format_kriterium
local function format_criterion(singular, plural, items)
    if #items > 1 then
        return string.format(messages[singular .. '_criterion_plural'],
            mw.text.listToText(items, ', ', ' ' .. messages['or'] .. ' '))
    elseif #items == 1 then
        return string.format(messages[singular .. '_criterion_singular'], items[1])
    else
        return string.format('{{%s|' .. messages['error_no_x_given'] .. '}}',
            config['error_message_template'], messages[plural])
    end
end

local function pagelist(args)
    local r = {}
    for i, v in ipairs(args) do
        v = mw.text.trim(v)
        if v ~= '' then
            local lang, page = string.match(v, '^([a-z\]+):(.+)$')
            if lang then
                table.insert(r, string.format('[[:%s:%s|%s]]', lang, page, page))
            else
                table.insert(r, string.format('[[:%s]]', v))
            end
        end
    end
    return r
end

local function nslist(args)
    local r = {}
    local namespaceName = 'article'
    for i, namespaceId in ipairs(args) do
        namespaceId = mw.text.trim(namespaceId)
        if namespaceId ~= '' then
            if namespaceId ~= "0" then
                namespaceName = '{{lc:{{ns:' .. namespaceId .. '}}}}'
            end
            table.insert(r, namespaceName)
        end
    end
    return r
end

-- kriterium_maler
local function criterion_templates(args)
    local r = {}
    for i, v in ipairs(args) do
        v = mw.text.trim(v)
        if v ~= '' then
            local m, n = string.match(v, '^([a-z\]+):(.+)$')
            if m then
                table.insert(r, string.format('{{%s|%s|%s}}', config['template_link_template'], n, m))
            else
                table.insert(r, string.format('{{%s|%s}}', config['template_link_template'], v))
            end
        end
    end
    return format_criterion('template', 'templates', r)
end

local function make_category_link(v)
    local lang = 'default'
    local name = v
    local m, n = string.match(v, '^([a-z\]+):(.+)$')
    if m then
        lang = m
        name = n
    end
    return string.format('[[:%s:%s|%s]]', category_prefix[lang], name, name)
end


-- kriterium_kategorier
local function criterion_categories(args, ignore)
    local r = {}
    for i, v in ipairs(args) do
        v = mw.text.trim(v)
        if v ~= '' then
            table.insert(r, make_category_link(v))
        end
    end

    local msg = format_criterion('category', 'categories', r)

    ignore = ignore:expand()
    if ignore ~= nil and mw.text.trim(ignore) ~= '' then
        r = mw.text.split(ignore, ',')
        for i, v in ipairs(r) do
            v = mw.text.trim(v)
            r[i] = make_category_link(v)
        end
        msg = msg .. string.format(messages['category_criterion_ignore'], mw.text.listToText(r, ', ', ' ' .. messages['or'] .. ' '))
    end

    return msg
end

-- kriterium_tilbakelenke
local function criterion_backlinks(args)
    return format_criterion('backlink', 'backlinks', pagelist(args))
end

-- kriterium_fremlenke
local function criterion_forwardlinks(args)
    return format_criterion('forwardlink', 'forwardlinks', pagelist(args))
end

-- kriterium_enkeltsider
local function criterion_pages(args)
    return format_criterion('page', 'pages', pagelist(args))
end

-- kriterium_sparql
local function criterion_sparql(frame, query, explanation)
	local url = 'http://query.wikidata.org/#' .. frame:callParserFunction('urlencode', { query, 'PATH' })
    if explanation ~= nil then
	    return string.format(messages['sparql_criterion_with_explanation'], explanation, url)
	else
	    return string.format(messages['sparql_criterion'], url)
	end
end

-- kriterium_bytes
local function criterion_bytes(args)
   return string.format(messages['bytes_criterion'], args[1])
end

-- kriterium_navnerom
local function criterion_namespaces(args, site)
    site = site:expand()
    local msg = format_criterion('namespace', 'namespaces', nslist(args, site))
    if site ~= nil then
        site = mw.text.trim(site)
        if site ~= '' then
            return string.format('%s at [https://%s %s]', msg, site, site)
        end
    end
    return msg
end

-- kriterium_ny
local function criterion_new(redirects)
    redirects = redirects:expand()
    local msg = messages['new_criterion']
    if redirects ~= nil and mw.text.trim(redirects) ~= '' then
        msg = messages['new_criterion_with_redirects']
    end
    return msg
end

--kriterium
function uk.criterion(frame)
    local description = frame:getArgument('description'):expand()
    if description ~= nil and mw.text.trim(description) ~= '' then
        if frame.args.criterion == 'sparql' then
            return criterion_sparql(frame, frame:getArgument('query'):expand(), description)
        else
	        return description
	    end
    end
    local t = {
        [config['arguments']['new']] = function(args) return criterion_new(frame:getArgument('redirects')) end,
        [config['arguments']['existing']] = messages['existing_criterion'],
        [config['arguments']['stub']] = messages['stub_criterion'],
        [config['arguments']['bytes']] = function(args) return criterion_bytes(args) end,
        [config['arguments']['namespace']] = function(args) return criterion_namespaces(args, frame:getArgument('site')) end,
        [config['arguments']['template']] = function(args) return criterion_templates(args) end,
        [config['arguments']['category']] = function(args) return criterion_categories(args, frame:getArgument('ignore')) end,
        [config['arguments']['backlink']] = function(args) return criterion_backlinks(args) end,
        [config['arguments']['forwardlink']] = function(args) return criterion_forwardlinks(args) end,
        [config['arguments']['pages']] = function(args) return criterion_pages(args) end,
        [config['arguments']['sparql']] = function(args) return criterion_sparql(frame, frame:getArgument('query'):expand()) end,
    }
    local args = {}
    for i, v in ipairs(frame.args) do
        if tonumber(i) ~= nil then
            args[i] = v
        end
    end
    local k = frame.args.criterion
    local s = type(t[k]) == "function" and t[k](args) or t[k] or string.format('{{%s|%s}}', config['error_message_template'], messages['error_no_valid_criterion_given'])
    return frame:preprocess(s)
end

return uk