Modul:Navigationsleiste
aus Wikipedia, der freien Enzyklopädie
Die Dokumentation für dieses Modul kann unter Modul:Navigationsleiste/Doku erstellt werden
-- Bitte weitere Funktionalität bei Bedarf hinzufügen.
-- Dieses Modul kann auch die Konvertierungen bestehender
-- Vorlagen vom Typ Navigationsleiste aufnehmen.
p = {}
-- Zweizeilige Navigationsleiste, die annotierbare Gruppen bildet
-- 1. Zeile: Annotierbare Gruppen von Wikilinks, 2. Zeile: Annotationen
function p.Gemeindeteile( frame )
local align, align2, samebox = 'center', nil, 'no'
local border, color = '1px solid dimgray', 'dimgray'
local lnks = mw.html.create( 'div' )
:cssText( 'text-align:#ALIGN' )
:tag( 'p' )
local refs = mw.html.create( 'div' )
:cssText( 'text-align:#ALGN2;color:#TCOLOR;font-size:small' )
:tag( 'p' )
local ref, ret = 0, {}
for k, v in pairs( frame.args )
do local br, sup = nil, { '' }
v = mw.text.trim( v )
v = v:gsub( '^sup:[,%s%d]+', function( s )
s:gsub( '%d+', function( _s ) sup[ #sup + 1 ] = _s end )
return '' end )
v, br = v:gsub( '^<br.->', '' )
if type( k ) == 'number'
then if not v:find( '^%[.*%]$' )
then ref = ref + 1
if ref > 1 and br < 1 then refs:wikitext( ' ' ) end
if br > 0 then refs = refs:done():tag( 'p' ) end
refs:wikitext( '<sup>' .. tostring( ref ) .. '</sup> ' .. v )
else if #sup < 2 then sup[ #sup + 1 ] = tostring( ref + 1 ) end
if ref > 0 and br < 1 then lnks:wikitext( ' • ' ) end
if br > 0 then lnks = lnks:done():tag( 'p' ) end
lnks:tag( 'span' )
:cssText( 'color:#TCOLOR;padding:1px 2px' )
:cssText( 'border-bottom:#BORDER;border-right:#BORDER' )
:wikitext( v:gsub( '%s*,%s*', ' • ' ):sub( 1 ) )
lnks:tag( 'sup' )
:cssText( 'color:#TCOLOR' )
:wikitext( table.concat( sup, ' ' ) )
end
else if k:lower() == 'bild' then ret.BILD = v
else if k:lower() == 'titel' then ret.TITEL = v
else if k:lower() == 'rahmen' then border = v
else if k:lower() == 'farbe' then color = v
else if k:lower() == 'zeilen' then align = v
else if k:lower() == 'zeile2' then align2 = v
else if k:lower() == 'einzug' then samebox = v
end end end end end end end end
end
ret.INHALT = ( tostring( lnks:done() ) .. tostring( refs:done() ) )
:gsub( '#BORDER', border )
:gsub( '#TCOLOR', color )
:gsub( '#ALIGN', align )
:gsub( '#ALGN2', align2 or align )
if samebox == 'fit' or samebox == 'yes'
then local margin = '0px'
if ret.BILD then margin = ret.BILD:gsub( '^.-([%d]+)px.*$', '%1' ) end
ret.INHALT = '<div style="margin-left:' ..
tostring( tonumber( margin ) + 8 ) ..
'px">' .. ret.INHALT .. '</div>'
end
-- noch nicht als Modul verfügbar, expandTemplate nutzen
return frame:expandTemplate{ title = 'Navigationsleiste', args = ret }
end
return p