Moduuli:Valikoituja artikkeleita

Wikipediasta
Siirry navigaatioon Siirry hakuun

Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:Valikoituja artikkeleita/ohje

local p = {}

-- lupaavien ja hyvien artikkeleiden lista; vapaasti muokattavissa
-- pituutta listalla saa olla vaikka kuinka paljon, ei väliä
-- esimerkiksi 50 artikkelia on mahdollinen
local t = {[0]="Aninkaistensilta",
[1]="Aristoteleen matematiikka",
[2]="Atarashii naginata",
[3]="Brasilia",
[4]="Cabo de Gatan taistelu",
[5]="Eight Miles High",
[6]="Gediminas",
[7]="George Best",
[8]="Ann Morgan Guilbert",
[9]="Easy Rider – matkalla",
[10]="Juudaksenpuu",
[11]="Kulapiiri",
[12]="Limoneeni",
[13]="Ludwig Mies van der Rohe",
[14]="Matthias Akiander",
[15]="Pakurikääpä",
[16]="Pyörätuoli",
[17]="Seitsikkohikkori",
[18]="Sinitaskurapu",
[19]="Vakoilu Yhdysvaltain sisällissodassa",
[20]="Viiltäjä-Jack"}

function p.valikoi( frame )
    local article_table = {}
    local number_table = {}
    -- satunnaisten lukujen generaattorille täytyy antaa lähtökohta, mieluiten muuttuva
    -- numero ykköset fallbackeina, jos tunnuslukua ei saada
    local pages = mw.site.stats.pages or 1
    local articles = mw.site.stats.articles or 1
    local users = mw.site.stats.users or 1
    local seed = pages + articles + users
    math.randomseed(seed)
    local i = 1
    while i < 11 do -- tätä täytyy muuttaa, jos halutaan vaikka esim. vain 8 artikkelia etusivulle; nykyinen on 10 artikkelia
        local n = math.random(0, table.maxn(t))
        if not valueExists(number_table, n) then
            table.insert(number_table, n)
            i = i + 1
        end
    end
    for item, value in ipairs(number_table) do
        local article_n = number_table[item]
        local article_name = t[article_n]
        local link = "[[" .. article_name .. "]]"
    	table.insert(article_table, link)
    end
    -- tähän kohtaan voidaan lisätä tulostettavien artikkelien aakkostus
    return table.concat(article_table, ", ")
end

function valueExists(tbl, value)
    for k,v in pairs(tbl) do
        if value == v then
            return true
        end
    end
    return false
end
 
return p