Modul:Kolumner
Dokumentationen för denna modul kan skapas på Modul:Kolumner/dok
local p = {} -- kolumner, liknande funktion som mallen {{kolumner}} som använder CSS-kod som inte fungerar i vissa webbläsare (t ex MSIE före version 10) -- -- parametrar -- ========== -- antal (frivillig): anger antalet kolumner, om inget värde anges blir det två kolumner -- kolumnbredd (frivillig): parameterns värde används som bredden för varje kolumn. kolumnbredd kan anges absolut i px, t ex 250px, eller relativ, t ex 20%. -- totalbredd (frivillig): parameterns värde används för den sammanlagda bredden för alla kolumner. totalbredd kan anges absolut i px, t ex 500px, eller relativ, t ex 75%. -- (om totalbredd anges så ignoreras kolumnbredd) -- liten (frivillig): om parameterns värde = "ja" blir det en något mindre fontstorlek (90 %) function p.kolumner(frame) local antal_kolumner = tonumber(frame.args['antal']) or 2 local style = "" if (frame.args['liten'] == "ja") then style="style='font-size:90%;'" end local kolumnbredd = frame.args['kolumnbredd'] local totalbredd = frame.args['totalbredd'] local width = "" if (kolumnbredd) then width="width=" .. kolumnbredd if (string.match(kolumnbredd,"(%d+)%%")) then notusedpercent = (100-antal_kolumner*tonumber(string.match(kolumnbredd,"(%d+)%%"))) .. "%" end end if (totalbredd) then if (string.match(totalbredd,"(%d+)px")) then width = "width=" .. math.floor(tonumber(string.match(totalbredd,"(%d+)px"))/antal_kolumner) .. "px" end if (string.match(totalbredd,"(%d+)%%")) then width = "width=" .. math.floor(tonumber(string.match(totalbredd,"(%d+)%%"))/antal_kolumner) .. "%" notusedpercent = (100-math.floor(tonumber(string.match(totalbredd,"(%d+)%%")))) .. "%" end end local antal_poster = 0 for i,v in ipairs(frame.args) do antal_poster = i end local antal_per_kolumn = math.floor(antal_poster / antal_kolumner) local kolumner_med_extra = antal_poster % antal_kolumner local res = "{| " if (notusedpercent) then res = res .. "width=100% " end res = res ..style.."\n" local k = 0 for i = 0, antal_kolumner - 1 do res = res .. "|valign=top " .. width .. "|\n" local jmax = antal_per_kolumn if (i < kolumner_med_extra) then jmax = jmax + 1 end for j = 1, jmax do k = k + 1 res = res .. frame.args[k] .. "" end end if (notusedpercent) then res = res .. "|width=" .. notusedpercent .. "|\n" end return res .. "|}" end -- kolumner_manuell, liknande funktionen kolumner men användaren styr var ny kolumn ska infogas genom parameternvärdet %bryt -- -- parametrar -- ========== -- kolumnbredd (frivillig): parameterns värde används som bredden för varje kolumn. kolumnbredd kan anges absolut i px, t ex 250px, eller relativ, t ex 20%. -- liten (frivillig): om parameterns värde = "ja" blir det en något mindre fontstorlek (90 %) -- brytmarkering (frivillig): det värde som anges här styr vilket parametervärde som används för kolumnbrytning. Om inget värde anges används "%bryt" för att markera ny kolumn. function p.kolumner_manuell(frame) local style = "" local brytmarkering = frame.args['brytmarkering'] or "%bryt" if (frame.args['liten'] == "ja") then style="style='font-size:90%;'" end local kolumnbredd = frame.args['kolumnbredd'] local width = "" if (kolumnbredd) then width="width=" .. kolumnbredd end local antal_poster = 0 for i,v in ipairs(frame.args) do antal_poster = i end local res = "{| " res = res ..style.."\n" local k = 0 res = res .. "|valign=top " .. width .. "|\n" for i = 1, antal_poster do if string.gsub(frame.args[i],"\n","") == brytmarkering then res = res .. "|valign=top " .. width .. "|\n" else res = res .. frame.args[i] .. "" end end return res .. "|}" end return p