Modul:Citation/CS1/Arguments/sandkasse

Moduldokumentasjon


Denne modulen og dens undermoduler er «motoren» bak CS1-stilen og de ulike kildemalene som følger denne ({{Kilde bok}}, {{Kilde www}}, osv…). Modulen er importert fra en:Module:Citation/CS1 og tilpasset norske forhold. De viktigste tilpasningene er i Modul:Citation/CS1/Configuration og Modul:Citation/CS1/Date validation, men det er gjort tilpasninger i omtrent alle undermodulene, så ved behov for å re-importere må man passe på dette. Re-importer alltid til sandkassene først.

Skal du gjøre endringer i denne modulen eller en av modulens undermoduler, prøv alltid i den tilhørende sandkassen først. Det finnes sandkasseversjoner av alle kildemalene som benytter Modul:Citation/CS1/sandkasse: {{Kilde bok/sandkasse}}, {{Kilde www/sandkasse}}, osv…, slik at du kan se hvordan disse blir påvirket av endringene dine.

Brukes av rediger

Denne modulen brukes av følgende kildemaler:

Tilleggsmoduler rediger


Vedlikeholdskategorier rediger



c = {};
 
exclude = { ['#'] = true, ['1'] = true, ['2'] = true, ['3'] = true, ['4'] = true, ['5'] = true, ['k'] = true, ['v'] = true, ['list'] = true };
 
function c.build_whitelist( frame )
    local title = mw.title.new( "Modul:Citation/CS1/sandkasse" );
    local source = title:getContent();
 
    local result = "whitelist = {<br />\n<br />\n";
    local list = {};
 
    for w in source:gmatch( "args%[(.-)%]" ) do
        w = w:gsub( "%s*%.%.%s*i%s*%.%.%s*", "#" );
        w = w:gsub( "%s*%.%.%s*i", "#" );
        w = w:gsub( "i%s*%.%.%s*", "#" );
        w = w:gsub('"', '' );
        w = w:gsub('1(%D)', '#%1');
        w = w:gsub('1$', '#');
        list[w] = true;
    end
    for w in source:gmatch( "args%.([%w%d_-]*)" ) do
        w = w:gsub('1(%D)', '#%1');
        w = w:gsub('1$', '#');
        list[w] = true;
    end
 
    for s in source:gmatch( "selectone%(%s*args%s*,%s*{(.-)}" ) do
        for w in s:gmatch( "%s*([^,]+)%s*" ) do
            w = w:gsub( "%s*%.%.%s*i%s*%.%.%s*", "#" );
            w = w:gsub( "%s*%.%.%s*i", "#" );
            w = w:gsub( "i%s*%.%.%s*", "#" );
            w = w:gsub( '"', '' );
            w = w:gsub( "'", '' );
            w = w:gsub('1(%D)', '#%1');
            w = w:gsub('1$', '#');
            w = w:match( "^%s*(.-)%s*$");
            list[w] = true;
        end        
    end
 
    title = mw.title.new( "Modul:Citation/CS1/Configuration/sandkasse" );
    source = title:getContent();
    for s in source:gmatch( "%sparameters%s*=%s{(.-)}" ) do
        for w in s:gmatch( "%s*([^,]+)%s*" ) do
            w = w:gsub( "%s*%.%.%s*i%s*%.%.%s*", "#" );
            w = w:gsub( "%s*%.%.%s*i", "#" );
            w = w:gsub( "i%s*%.%.%s*", "#" );
            w = w:gsub( '"', '' );
            w = w:gsub( "'", '' );
            w = w:gsub('1(%D)', '#%1');
            w = w:gsub('1$', '#');
            w = w:match( "^%s*(.-)%s*$");
            list[w] = true;
        end        
    end
 
    cfg = require( "Modul:Citation/CS1/Configuration/sandkasse" );
    for k, v in pairs( cfg.aliases ) do
        if type( v ) == 'table' then
            for k2, v2 in pairs( v ) do
                list[v2] = true;
                list[v2:gsub("#", "")] = true;
            end
        else
            list[v] = true;
            list[v:gsub("#", "")] = true;
        end
    end
 
    local list2 = {};
    for k in pairs( list ) do
        if exclude[k] == nil then
            table.insert( list2, k );
        end
    end
    table.sort( list2 );
 
    result = result .. "basic_arguments = {<br />\n";
    for _, k in pairs( list2 ) do    
        if k:match( "#" ) == nil then 
            result = result .. "&nbsp;&nbsp;&nbsp;&nbsp;['" .. k .. "'] = true," .. "<br />\n";
        end
    end        
    result = result .. "},<br /> \n<br /> \n";
 
    result = result .. "numbered_arguments = {<br />\n";
    for _, k in pairs( list2 ) do    
        if k:match( "#" ) ~= nil then 
            result = result .. "&nbsp;&nbsp;&nbsp;&nbsp;['" .. k .. "'] = true," .. "<br />\n";
        end
    end        
    result = result .. "},<br /> \n";
 
    result = result .. "};<br />\n<br />\nreturn whitelist;"
    return result;
end
 
return c;