Modul:Vorlage:Infoboxen Physik
Vorlagenprogrammierung | Diskussionen | Lua | Unterseiten | ||
Modul | Deutsch
|
Modul: | Dokumentation |
Diese Seite enthält Code in der Programmiersprache Lua. Einbindungszahl Cirrus
--[=[ 2016-11-13
{{Infobox Physikalische Einheit}}
{{Infobox Physikalische Größe}}
{{Infobox Physikalische Konstante}}
{{Infobox Physikalische Kennzahl}}
]=]
local Config = {
E = {
Selbst = "Infobox Physikalische Einheit",
Systeme = {
GBUSM = { Art = "Angloamerikanisches Maßsystem",
Kat = "Angloamerikanische Masseneinheit"},
GBUSV = { Art = "Angloamerikanisches Maßsystem",
Kat = "Angloamerikanische Volumeneinheit"},
GBUSF = { Art = "Angloamerikanisches Maßsystem",
Kat = "Angloamerikanische Flächeneinheit"},
GBUSL = { Art = "Angloamerikanisches Maßsystem",
Kat = "Angloamerikanische Längeneinheit"},
GBUS = { Art = "Angloamerikanisches Maßsystem",
Kat = "Angloamerikanische Einheit"},
CGS = { Art = "CGS-Einheitensystem",
Kat = "CGS-Einheit"},
EME = { Art = "Elektromagnetisches Einheitensystem",
Kat = "CGS-Einheit",
Kat2= "Elektromagnetische Einheit"},
ESE = { Art = "Elektrostatisches Einheitensystem",
Kat = "CGS-Einheit",
Kat2= "Elektromagnetische Einheit"},
Gauss = { Art = "Gaußsches Einheitensystem",
Kat = "CGS-Einheit",
Kat2= "Elektromagnetische Einheit"},
HLE = { Art = "Heaviside-Lorentz-Einheitensystem",
Kat = "CGS-Einheit",
Kat2= "Elektromagnetische Einheit"},
mitSI = { Art = "Gebräuchliche Nicht-SI-Einheiten" ..
"#Zur Verwendung mit dem SI zugelassene Einheiten" ..
"|Zum Gebrauch mit dem SI zugelassen",
Kat = "Zum Gebrauch mit dem SI zugelassene Einheit" },
SI = { Art = "Internationales Einheitensystem",
Kat = "SI-Einheit" },
SIB = { Art = "Internationales Einheitensystem",
Kat = "SI-Basiseinheit" },
MKfS = { Art = "Technisches Maßsystem",
Kat = "Technische Maßeinheit" }
}
},
G = {
Selbst = "Infobox Physikalische Größe"
},
K = {
Selbst = "Infobox Physikalische Konstante"
},
Z = {
Selbst = "Infobox Physikalische Kennzahl"
},
Selbst = "Infoboxen Physik",
errCatTop = "Wikipedia:Vorlagenfehler"
}
local Fun = { }
local function fehler( alert )
local err = mw.html.create( "span" )
:addClass( "error" )
:wikitext( mw.text.nowiki( alert ) )
local r = tostring( err )
if mw.title.getCurrentTitle().namespace == 0 then
local s = Config.errCatTop
if Config.self then
s = string.format( "%s/%s", s, Config.self )
end
r = string.format( "%s[[Kategorie:%s]]", r, s )
end
return r
end -- fehler()
Fun.eSystem = function ( args )
-- Einheit|System=
-- args -- table, with parameters
-- Returns appropriate string
local system = args.System or ""
local r
if system:match( "^%[%[" ) then
r = system
else
local cnf = Config.E
local einh = { }
local kats = { }
local unknown = { }
local types = cnf.Systeme
local params, typ
system = system:gsub( "%+", " " ) -- temp / Migration
system = system:gsub( "-", "" )
params = mw.text.split( system, "%s+" )
for k, v in pairs( params ) do
typ = types[ v ]
if typ then
if typ.Art then
table.insert( einh, typ.Art )
end
if typ.Kat then
table.insert( kats, typ.Kat )
end
if typ.Kat2 then
table.insert( kats, typ.Kat2 )
end
else
table.insert( unknown, v )
end
end -- for k, v
if next(unknown) then
r = fehler( "System unbekannt: " ..
table.concat( unknown, " " ) )
else
for k, v in pairs( einh ) do
if r then
r = r .. ", "
else
r = ""
end
r = string.format( "%s[[%s]]", r, v )
end
if not r then -- total mess outside
r = fehler( "System=???????" )
end
for k, v in pairs( kats ) do
r = string.format( "%s[[Kategorie:%s]]", r, v )
end
end
end
if not mw.title.getCurrentTitle().isContentPage then
r = r:gsub("%[%[Kategorie:[^%]]+%]%]","")
end
return r
end -- Fun.eSystem()
Fun.zTable = function ( args )
--[[ makes table for quantities
gets input as e.g. <math>v</math> = Velocity, <math>c</math>=Speed of light
returns appropriate string]]
local tablehead="\n{|class=\"wikitable\""
local tablecontent=string.gsub(","..args["Größentabelle"], ",%s*(.-)=%s*","\n|-\n| %1 ||")
local tableend="\n|}"
return tablehead..tablecontent..tableend
end --Fun.zTable
-- Export
local p = { }
p.main = function ( about, at, args )
-- Invocation
-- about -- string, "E", "G", "K"
-- at -- string, parameter name
-- args -- table, with template parameters
-- Returns appropriate string
local r = Config[ about ]
if r then
local s = at or "?"
if r.Selbst then
Config.self = string.format( "Vorlage:%s", r.Selbst )
end
s = about:lower() .. s
if type( Fun[ s ] ) == "function" then
r = Fun[ s ]( args or { } )
else
r = fehler( "Unbekannte Funktion: " .. s )
end
else
r = about or "?"
r = fehler( "Unbekannter Vorlagentyp: " .. r )
end
return r
end -- p.main()
p.f = function ( frame )
local lucky, r
Config.frame = frame
lucky, r = pcall( p.main, frame.args[ 1 ], frame.args[ 2 ],
frame:getParent().args )
if not lucky then
r = fehler( r )
end
return r
end -- p.f()
return p