Dokumentationen för denna modul kan skapas på Modul:Sandlådan/Larske/Testmodul2/dok
local p = {}
require "mw.ustring"
--[[
Flikar, generar kod som använder HTML-klassen "gadget-tabs" med flera för att visa innehållsflikar
parametrar
==========
totalstil: (frivillig) css-kod för hela området med flikar och innehåll
flikknappradstil: (frivillig) css-kod för raden med flikar
flikstil: (frivillig) css-kod för alla flikar
flikstilN: (frivillig) css-kod för flik N
flikrubrikstil: (frivillig) css-kod för alla flikar
flikrubrikstilN: (frivillig) css-kod för flik N
flikrubrikN: (obligatorisk för minst N=1) text på flik N
flikinnehållgruppstil: (frivillig) css-kod för området med flikinnehåll
flikinnehållstil (frivillig) css-kod för innehållet för alla flikar
flikinnehållstilN (frivillig) css-kod för innehållet för flik N
flikinnehållN (obligatorisk för minst N=1) innehållet för flik N
]]
function p.Flikar(frame)
local res = ''
local args
if frame.args['flikrubrik1'] then
args= frame.args
else
args = frame:getParent().args
end
local totalstil = args['totalstil'] or ''
local flikknappradstil = args['flikknappradstil'] or 'padding-bottom:2px; border-style:solid; border-width:0px 0px 1px 0px;'
local flikrubrikstil = args['flikrubrikstil'] or 'border:solid black 1px; border-radius:10px 10px 0px 0px; padding:5px 10px; margin-right:2px; background:lightgrey;'
local flikinnehallgruppstil = args['flikinnehållgruppstil'] or ''
local flikinnehallstil = args['flikinnehållstil'] or 'border-style:solid; border-width:0px 1px 1px 1px; padding:5px;'
res = res .. '<div class="gadget-tabs" style="' .. totalstil .. '">'
res = res .. '<div class="gadget-tabs-buttonwrapper" style="' .. flikknappradstil .. '">'
local n = 1
while args['flikrubrik'..n] do
local flikrubrikstilN = args['flikrubrikstil' .. n] or ''
res = res .. '<span class="gadget-tabs-buttonlabel" style="' .. flikrubrikstil .. flikrubrikstilN .. '">' .. args['flikrubrik' .. n] .. '</span>'
n = n + 1
end
res = res .. '</div>'
res = res .. '<div class="gadget-tabs-contentwrapper" style="' .. flikinnehallgruppstil .. '">'
n = 1
while args['flikinnehåll'..n] do
local flikinnehallstilN = args['flikinnehållstil' .. n] or ''
res = res .. '<div class="gadget-tabs-content" style="' .. flikinnehallstil .. flikinnehallstilN .. '">' .. args['flikinnehåll' .. n] .. '</div>'
n = n + 1
end
res = res .. '</div>'
res = res .. '</div>'
return res
end
--[[
Vagnummerskylt, genererar kod för vägskylt med nummer
Skyltarna länkar automatiskt till artikeln för respektive väg (gäller endast Europavägar, Riksvägar och Länsvägar med nummer lägre än 500.
parametrar
==========
1 (typ):
- E för europaväg
- <tom> för väg med nummer under 500
- <länsbokstav> för vägar med nummer 500 eller högre (denna funktion är inte implementerad än)
- alt för en omledningsvägnummerskylt (blå text mot vit botten).
2 (nr): vägens nummer
höjd: (frivillig) antal px, om inget värde anges blir höjden 17px
länk: (frivillig) länk som bilden ska länka till, om länk ej anges fås en länk till Europaväg, Riksväg respektive Länsväg automatiskt
]]
function p.Vagnummerskylt(frame)
local typ= frame.args[1] or ''
local nr = frame.args[2] or ''
local hojd = frame.args['höjd'] or '17'
local link = frame.args['länk'] or ''
--color
local color = 'blå'
if (typ == 'E') then color = 'grön' end
if (typ == 'alt') then color = 'white' end
--link
if (link ~= '') then
link = '|länk=' .. link
else
link = '|länk=' -- ingen länk för sekundära länsvägar
if ((tonumber(nr) or 999) < 500) then link = '|länk=Länsväg ' .. nr end
if ((tonumber(nr) or 999) < 100) then link = '|länk=Riksväg ' .. nr end
if (typ == 'E') then link = '|länk=E' .. nr end
if (mw.ustring.sub(nr,1,1) == 'E') then link = '|länk=' .. nr end
end
--files
local res = '[[Fil:Vänster - ' .. color .. '.svg|500x' .. hojd .. 'px|länk=]]'
if (typ == 'E') then res = res .. '[[Fil:E - grön.svg|500x' .. hojd .. 'px|länk=]]' end
for i = 1, string.len(nr) do
res = res .. '[[Fil:' .. mw.ustring.sub(nr..'',i,i) .. ' - ' .. color .. '.svg|500x' .. hojd .. 'px|länk=]]'
end
res = res .. '[[Fil:Höger - ' .. color .. '.svg|500x' .. hojd .. 'px' .. link .. ']]'
return res
end
--[[
Avfartnummerskylt, genererar kod för avfartsskylt med nummer
parametrar
==========
1 (nr): avfartens nummer
länk: (frivillig) länk till önskad artikel
höjd: (frivillig) antal px, om inget värde anges blir höjden 17px
]]
function p.Avfartnummerskylt(frame)
local nr = frame.args[1] or ''
local link = frame.args['länk'] or ''
local hojd = frame.args['höjd'] or '17'
local res = '[[Fil:Avfart - gul.svg|500x' .. hojd .. 'px|länk=' .. link .. ']]'
for i = 1, string.len(nr) do
res = res .. '[[Fil:' .. mw.ustring.sub(nr..'',i,i) .. ' - gul.svg|500x' .. hojd .. 'px|länk=' .. link .. ']]'
end
res = res .. '[[Fil:Höger - gul.svg|500x' .. hojd .. 'px|länk=' .. link .. ']]'
return res
end
function p.testfunktion(frame)
local namn
if frame.args then
namn = frame.args['namn']
else
namn = frame
end
return '<' .. namn .. '>'
end
function p.newFromWikidataValue(frame)
local upperBound = frame.upperBound or frame.amount
local lowerBound = frame.lowerBound or frame.amount
local diff = math.abs(tonumber(upperBound) - tonumber(frame.amount))
local diff2 = math.abs(tonumber(lowerBound) - tonumber(frame.amount))
if diff2 > diff then
diff = diff2
end
-- TODO, att fixa så att inte 1234.000 'huggs av' till 1234
local lang = mw.language.new( 'sv' )
if diff == 0 or frame.norounding then
return lang:formatNum(tonumber(frame.amount))
else
local log = -math.log10(diff)
return lang:formatNum(p._round(frame.amount, math.ceil(log)))
end
end
return p