Modul:File link
Megjelenés
File link[mi ez?] • [dokumentáció: mutat, ] • [tesztek: létrehozás]
-- A modul wikilinks fájlok formázásához ad segédletet.
-- Feltételezzük, hogy a paraméter neve megegyezik a paraméter kulccsal (key)
local yesno = require('Modul:Yesno')
local checkType = require('libraryUtil').checkType
local p = {}
function p._main(args)
checkType('_main', 1, args, 'table')
-- Ez itt lényegében a libraryUtil.checkTypeForNamedArg függvény, csak itt mi akarjuk a karakterlánchibákat kezelni
local function checkArg(key,level)
if type(args[key]) ~= 'string' then
error(string.format(
"típus hiba a _main függvény '%s' paraméterében (stringet vártunk de, %s-t kaptunk)",
key,type(args[key])
), level)
end
end
local ret = {}
-- felveszünk egy paranacssori paramétert a pufferbe, amgayar megfeleőjével együtt.
local function addPositional(key,kulcs)
local val = args[key]
local ert = args[kulcs]
if val then
checkArg(key, 4)
ret[#ret + 1] = val
elseif ert then
checkArg(kulcs, 4)
ret[#ret + 1] = ert
end
end
-- Hozzáadunk egy nevesített paramétert a pufferhez, illetve annak angol megfelelőjét.
local function addNamed(key,kulcs)
local val = args[key]
local ert = args[kulcs]
if val then
checkArg(key, 4)
ret[#ret + 1] = key .. '=' .. val
elseif ert then
checkArg(kulcs, 4)
ret[#ret + 1] = key.. '=' .. ert --igen, az angol paramétert használjuk!
end
end
-- Fájlnév
if args['file'] then
checkArg('file', 3)
ret[#ret + 1] = 'File:' .. args['file']
elseif args['fájl'] then
checkArg('fájl', 3)
ret[#ret + 1] = 'File:' .. args['fájl']
end
-- Formátum
if args['format'] then
checkArg('format')
elseif args['formátum'] then
checkArg('formátum')
end
if args['format'] or args['formátum'] then
if args['formatfile'] then
checkArg('formatfile')
if args['format'] then
ret[#ret + 1] = args['format'] .. '=' .. args['formatfile']
elseif args['formátum'] then
ret[#ret + 1] = args['formátum'] .. '=' .. args['formatfile']
end
elseif args['fromátumfájl'] then
if args['format'] then
ret[#ret + 1] = args['format'] .. '=' .. args['formátumfájl']
elseif args['formátum'] then
ret[#ret + 1] = args['formátum'] .. '=' .. args['formátumfájl']
end
else
if args['format'] then
ret[#ret + 1] = args['format']
elseif args['formátum'] then
ret[#ret + 1] = args['formátum']
end
end
end
-- Keret
if yesno(args['border']) or yesno(args['keret']) then
ret[#ret + 1] = 'border'
end
addPositional('location','hely')
addPositional('alignment','igazítás')
addPositional('size','méret')
addNamed('upright','álló')
addNamed('link','hivatkozás')
addNamed('alt','helyszöveg')
addNamed('page','oldal')
addNamed('class','os7tály')
addNamed('lang','nyelv')
addNamed('start','eleje')
addNamed('end','vége')
addNamed('thumbtime','bélyegképidő')
addPositional('caption','felirat')
return string.format('[[%s]]', table.concat(ret, '|'))
end
function p.main(frame)
local origArgs = require('Module:Arguments').getArgs(frame, {
wrappers = 'Sablon:File link'
})
-- A paramétereket átmásoljuk egy új táblába
-- hogy ne kelljen a programkeretben annyi félét keresgélni.
-- illetve lehetővé tesszük a magyar neveket is, de angolra portoljuk
local args = {}
local file_exists = false;
for k, v in pairs(origArgs) do
-- A _BLANK, vagy _ÜRES speciális argumentumot létrehozzuk,
-- Ez olyan feltételes sablonokban használható jól, amelyeknél hasznos figyelmen kívül hagyni az üres paramétereket
-- de paramétert magát meg kell adni, és erre módot kell találnuk,
-- mint pl. [[File:Example.png|link=]].
if v == '_BLANK' or v== '_ÜRES' then
v = ''
end
-- megnézzük van- file vagy fájl argumentum deklarálva
if k == 'file' or k == 'fájl' then
file_exists = true
end
args[k] = v
end
if not file_exists then
error("a 'file' vagy 'fájl' paraméter hiányzik a [[Sablon:File link]] sablonból", 0)
end
local r = p._main(args)
return r
end --p.main
return p