Moduuli:Viikon kilpailu kriteerit

Wikipediasta
Tämä on arkistoitu versio sivusta sellaisena, kuin se oli 28. lokakuuta 2014 kello 01.54 käyttäjän Pxos (keskustelu | muokkaukset) muokkauksen jälkeen. Sivu saattaa erota merkittävästi tuoreimmasta versiosta.
Siirry navigaatioon Siirry hakuun
Code Result
{{#invoke:Viikon kilpailu kriteerit|criterion|uusi}} Virhe: Virheellinen/tuntematon kriteeri
{{#invoke:Viikon kilpailu kriteerit|criterion|uusi|redirects=1}} Virhe: Virheellinen/tuntematon kriteeri
{{#invoke:Viikon kilpailu kriteerit|criterion|löytyvä}} Virhe: Virheellinen/tuntematon kriteeri
{{#invoke:Viikon kilpailu kriteerit|criterion|tynkä}} Virhe: Virheellinen/tuntematon kriteeri
{{#invoke:Viikon kilpailu kriteerit|criterion|tavut|1000}} Virhe: Virheellinen/tuntematon kriteeri
{{#invoke:Viikon kilpailu kriteerit|criterion|nimiavaruus|14}} Virhe: Virheellinen/tuntematon kriteeri
{{#invoke:Viikon kilpailu kriteerit|criterion|nimiavaruus|0|10}} Virhe: Virheellinen/tuntematon kriteeri
{{#invoke:Viikon kilpailu kriteerit|criterion|takaisinlinkitys|Luettelo Nobel-palkituista henkilöistä}} Virhe: Virheellinen/tuntematon kriteeri
{{#invoke:Viikon kilpailu kriteerit|criterion|edelleenlinkitys|Bergen}} Virhe: Virheellinen/tuntematon kriteeri
{{#invoke:Viikon kilpailu kriteerit|criterion|malline|Selvennä}} Virhe: Virheellinen/tuntematon kriteeri
{{#invoke:Viikon kilpailu kriteerit|criterion|malline|Viitteetön|Lähteetön}} Virhe: Virheellinen/tuntematon kriteeri
{{#invoke:Viikon kilpailu kriteerit|criterion|luokka|Islanti}} Virhe: Virheellinen/tuntematon kriteeri
{{#invoke:Viikon kilpailu kriteerit|criterion|luokka|Islanti|se:Islánda|be:Ісландыя}} Virhe: Virheellinen/tuntematon kriteeri
{{#invoke:Viikon kilpailu kriteerit|criterion|luokka|Nisäkkäät|ignore=Ihminen,Sukupuuttoon kuolleet nisäkkäät}} Virhe: Virheellinen/tuntematon kriteeri
{{#invoke:Viikon kilpailu kriteerit|criterion|sivut|Islanti|Grönlanti}} Virhe: Virheellinen/tuntematon kriteeri
{{#invoke:Viikon kilpailu kriteerit|criterion|sparql|query=?item wdt:P31 wd:Q146. }} Virhe: Virheellinen/tuntematon kriteeri
{{#invoke:Viikon kilpailu kriteerit|criterion|sparql|query=?item wdt:P31 wd:Q146. |description=about cats }} Virhe: Virheellinen/tuntematon kriteeri

Methods for {{Viikon kilpailu pisteet}}

Code Result
{{#invoke:Viikon kilpailu kriteerit|rule|uusi|20}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|ohjaus|1}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|qualified|2}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|edit|1}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|tavu|0.1}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|tavu|1|max=100}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|tavubonus|20|3000}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|sana|3}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|sana|3|max=100}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|sanabonus|20|3000}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|kuva|3}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|kuva|3|max=100}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|kuva|3|max=100|ownimage=10}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|kuva|3|max=100|ownimage=10|initialimagelimit=0}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|ref|3|1}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|ref|3|1|max=100}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|mallineen poisto|10| Viitteetön | Lähteetön }} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|exlink|3}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|exlink|2|max=10}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|osio|10|Lähteet|Viitteet}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|osio|10|Lähteet|Viitteet|description=lähdeosiosta}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|wikidata|2|properties=P18,P2096}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|wikidata|2|properties=P569|require_reference=yes}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|wikidata|2|max=10|properties=P569|all=yes}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|wikidata|2|labels=nb,nn,se}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|wikidata|2|aliases=nb,nn,se}} Komentosarjavirhe: Funktiota ”rule” ei ole.
{{#invoke:Viikon kilpailu kriteerit|rule|wikidata|2|descriptions=nb,nn,se}} Komentosarjavirhe: Funktiota ”rule” ei ole.

uk = {}

local messages = {
    ['or'] = 'tai',
    ['error_no_x_given'] = 'No %s given',
    ['error_no_valid_criterion_given'] = 'Virheellinen/tuntematon kriteeri',

    ['templates'] = 'templates',
    ['template_criterion_singular'] = 'jotka on merkitty mallineella %s',
    ['template_criterion_plural'] = 'jotka on merkitty mallineella %s',

    ['categories'] = 'categories',
    ['category_criterion_singular'] = 'jotka sijaitsevat luokassa %s',
    ['category_criterion_plural'] = 'jotka sijaitsevat luokissa %s',

    ['backlinks'] = 'backlinks',
    ['backlink_criterion_singular'] = 'joihin johtaa linkki sivulta %s',
    ['backlink_criterion_plural'] = 'joihin johtaa linkki sivuilta %s',

    ['forwardlinks'] = 'forwardlinks',
    ['forwardlink_criterion_singular'] = 'joissa on linkki sivulle %s',
    ['forwardlink_criterion_plural'] = 'joissa on linkki sivuille %s',

    ['pages'] = 'pages',
    ['page_criterion_singular'] = '%s',
    ['page_criterion_plural'] = '%s',

    ['bytes_criterion'] = 'joita laajennetaan vähintään %s tavulla',
    ['namespace_criterion'] = 'jotka sijaitsevat nimiavaruudessa %s',
    ['namespace_criterion_articles'] = 'artikkeleihin',
    ['new_criterion'] = 'jotka aloitetaan kilpailun aikana',
    ['new_criterion_with_redirects'] = 'jotka aloitetaan kilpailun aikana (sisältää myös ohjaussivut)',
    ['existing_criterion'] = 'jotka ovat olemassa ennen kilpailun aloituspäivämäärää',
    ['stub_criterion'] = 'joista poistetaan tynkämalline',

}
local config = {
    ['template_link_template'] = 'Tl',
    ['error_message_template'] = 'Virhe',
    ['arguments'] = {
        ['new'] = 'uusi',
        ['existing'] = 'löytyvä',
        ['stub'] = 'tynkä',
        ['bytes'] = 'tavut',
        ['namespace'] = 'nimiavaruus',
        ['category'] = 'luokka',
        ['template'] = 'malline',
        ['backlink'] = 'takaisinlinkitys',
        ['forwardlink'] = 'edelleenlinkitys',
        ['page'] = 'sivut',
    }
}

local category_prefix = {
    ['be'] = 'be:Катэгорыя',
    ['se'] = 'se:Kategoriija',
    ['nn'] = 'nn:Kategori',
    ['no'] = 'no:Kategori',
    ['default'] = 'Luokka'
}

-- format_kriterium
function uk.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

function uk.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

-- kriterium_maler
function uk.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 uk.format_criterion('template', 'templates', r)
end

-- kriterium_kategorier
function uk.criterion_categories(args)
    local r = {}
    for i, v in ipairs(args) do
        v = mw.text.trim(v)
        if v ~= '' then
            local lang = 'default'
            local name = v
            local m, n = string.match(v, '^([a-z\]+):(.+)$')
            if m then
                lang = m
                name = n
            end
            table.insert(r, string.format('[[:%s:%s|%s]]', category_prefix[lang], name, name, name))
        end
    end
    return uk.format_criterion('category', 'categories', r)
end

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

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

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

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

-- kriterium_navnerom
function uk.criterion_namespace(args)
	if args[1] == '0' then
   		return messages['namespace_criterion_articles']
   	else
   		return string.format(messages['namespace_criterion'], '{{ns:' .. args[1] .. '}}')
   	end
end

-- kriterium_ny
function uk.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 t = {
        [config['arguments']['new']] = function(args) return uk.criterion_new(frame:getArgument('redirects')) end,
        [config['arguments']['existing']] = messages['existing_criterion'],
        [config['arguments']['stub']] = messages['stub_criterion'],
        [config['arguments']['bytes']] = function(args) return uk.criterion_bytes(args) end,
        [config['arguments']['namespace']] = function(args) return uk.criterion_namespace(args) end,
        [config['arguments']['template']] = function(args) return uk.criterion_templates(args) end,
        [config['arguments']['category']] = function(args) return uk.criterion_categories(args) end,
        [config['arguments']['backlink']] = function(args) return uk.criterion_backlinks(args) end,
        [config['arguments']['forwardlink']] = function(args) return uk.criterion_forwardlinks(args) end,
        [config['arguments']['page']] = function(args) return uk.criterion_pages(args) 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