Modul:Vorlage:Babel
Die Dokumentation für dieses Modul kann unter Modul:Vorlage:Babel/Doku erstellt werden
-- Babel -- 20251009
-- ursprünglich aus der Esperanto-Wikipedia, aber von Tlustulimu teilweise nach dem
-- englischen Modul angepaßt, weil anders der erste unbenannte Parameter nicht
-- wie gewünscht funktionierte.
function subtitle(text)
-- This function builds subtitles in the box
local sub_title = mw.html.create('table')
:css('text-align','center')
:css('width','100%')
:css('margin','0 auto')
local row = sub_title:tag('tr')
local sub_title_cell = row:tag('th')
:css('background-color','#EEFFCC')
:css('border','1px dotted #FFCC99')
:css('padding','0.3em')
:wikitext(text)
:done()
-- sub_title:done()
return tostring(sub_title)
end
local p = {}
function p.babel(frame)
-- This function builds the babel box used by the {{babel}} template.
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
--local args = getArgs(frame, {wrappers = 'Template:Babel'})
local args = getArgs(frame, {wrappers = 'Benutzer:Tlustulimu/Vorlage:Babel'})
local tab = ""
local frame = mw.getCurrentFrame()
local first = false
if args[1] and args[1]:find('%S') then
first = true
end
-- variables for the babel cells
local t1 = "<tr><td>"
local t2 = "</td></tr>"
local mf = args.mw or "{{GENDER:{{BASEPAGENAME}}|m|w|}}"
-- "remove" args[1] so it isn't looked at in the loop
-- table.remove(args,1) doesn't produce desired result
if first == false then
args[1] = ''
end
-- creates the table cell's beginning
tab = tab .. t1
-- Keep track of how many columns are in this table
local col_span = 1
for _, v in ipairs( args ) do
-- ! indicates a new cell should be created
if v:find('%S') and v ~= '!' then
if mw.ustring.sub(v,1,2) == "[[" then
tab = tab .. v
elseif mw.ustring.sub(v,1,2) == "{{" and mw.ustring.sub(v,1,3) ~= "{{{" then
tab = tab .. v
elseif mw.ustring.sub(v,1,1) == "<" then
tab = tab .. v
-- converts the text with ## at the begining into subtitle
elseif mw.ustring.sub(v,1,2) == "##" then
v = mw.ustring.sub(v,3)
tab = tab .. subtitle(v)
-- code for {{#Babel, because the parser analyzed this before Lua can work
elseif mw.ustring.sub(v,1,3) == "#b#" or mw.ustring.sub(v,1,3) == "#B#" then
local v = mw.ustring.sub(v,4)
-- removes the internal links
v = mw.ustring.gsub(v,"%[%[Project:Babel%|Babel – Benutzerinformationen%]%]","",1)
v = mw.ustring.gsub(v,"%[%[:Kategorie:Benutzer:nach Sprache%|Benutzer nach Sprache%]%]","",1)
v = '<div style="width:246px; float:left;">' .. v .. "</div>"
tab = tab .. v
else
tab = tab .. frame:preprocess('{{User '..v.. '|mw=' .. mf .. '}}')
end
-- Recycling body_cells for <td>
elseif v and v == '!' then
col_span = col_span + 1
tab = tab .. '</td><td>' -- end of the table cell and beginn of a new one, for more then one column
-- body_cells = row2:tag('td')
end
end
-- creates the title line of the table
local fl = args.float or args.align or ""
local color = args.color or ""
local header = ""
local t = args.titel or args.Titel or '[[Wikipedia:Babel|Babel:]]'
local c = ""
local c2 = ""
if color ~= "" then
c = 'style="background-color:' .. color .. ';" '
c2 = 'style="background-color:' .. color .. '; " | '
end
local margin = ""
-- correction of the left and right margins, if the box is floated to the left side
if fl == "left" then
margin = "margin-left:0; margin-right:1em;"
end
if first == true then
-- code from the template {{Babel-HTML-Kopf}}, but with added width
header = '<table style="width:248px; ' .. frame:preprocess('{{Babel-Style|float=' .. fl .. '}}') .. margin .. '" id="userboxes">'
if col_span > 1 then
header = header .. '<tr><th ' .. c .. 'colspan="' .. col_span .. '">' .. t .. '</th></tr>'
else
header = header .. '<tr><th ' .. c .. '>' .. t .. '</th></tr>'
end
tab = header .. tab
else
-- code from the template {{Babel-Kopf}}, but with added width
header = '{| style="width:248px; ' .. frame:preprocess('{{Babel-Style|float=' .. fl .. '}}') .. margin .. '" id="userboxes"'
if col_span > 1 then
header = header .. '\n! ' .. c .. 'colspan="' .. col_span .. '" | ' .. t
else
header = header .. '\n! ' .. c2 .. t
end
tab = header .. "\n" .. tab
end
-- for user according to the location (country, town, village etc.)
local maxaus = 20
for i = 1, maxaus do
local a = args['aus' .. i] or ""
if a ~="" then
-- for a title before the location
local title = args['aus' .. i .. "-titel"] or ""
if title ~= "" then
tab = tab .. subtitle(title)
end
tab = tab .. frame:preprocess('{{Benutzer:Vorlage/aus ' .. a .. '}}')
end
end
-- for special boxes
local maxspec = 20
if args['Spezialbox'] then
-- for a title before the special box
local title = args['Spezialbox-titel'] or ""
if title ~= "" then
tab = tab .. subtitle(title)
end
local s = args['Spezialbox']
tab = tab .. s
end
for i = 2, maxspec do
local s = args['Spezialbox' .. i] or ""
if s ~="" then
-- for a title before the special box
local title = args['Spezialbox' .. i .. "-titel"] or ""
if title ~= "" then
tab = tab .. subtitle(title)
end
tab = tab .. s
end
end
-- code for the template {{Benutzer SUL}}
if args['SUL-Projekt'] ~= nil and args['SUL-Projekt'] ~= "" then
local p = args['SUL-Projekt']
local l = args['SUL-Sprache'] or ""
-- for title before the information about the user's SUL
local title = args['SUL-Titel'] or ""
if title ~= "" then
tab = tab .. subtitle(title)
end
tab = tab .. frame:preprocess('{{Benutzer SUL|1=' .. l .. '|2=' .. p
.. '}}')
end
-- creates the table cell's end
tab = tab .. t2
if color ~= "" then
c = "background-color:" .. color .. ";"
end
if args['Fußzeile'] or args['fußzeile'] then
local f = args['Fußzeile'] or args['fußzeile']
if col_span > 1 then
tab = tab .. '<tr><td colspan="' .. col_span .. '" style="text-align:center;' .. c .. '">' .. f .. t2
else
tab = tab .. '<tr><td style="text-align:center; ' .. c .. '">' .. f .. t2
end
else
if first == true then
local kat = "'''[[:Kategorie:Benutzer:nach Sprache|Benutzer nach Sprache]]'''"
if col_span > 1 then
tab = tab .. '<tr><td colspan="' .. col_span .. '" style="text-align: center; ' .. c .. '">' .. kat .. t2
else
tab = tab .. '<tr><td style="text-align: center; ' .. c .. '">' .. kat .. t2
end
end
end
-- creates the end of the table
if first == true then
tab = tab .. "</table>"
end
return tostring(tab)
end
return p
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.