Modul:CitWeb
Megjelenés
CitWeb[mi ez?] • [dokumentáció: mutat, ] • [tesztek: létrehozás]
--Version 2020_06_19
require('strict')
local nyksz = require('Modul:Nyelvkódszűrő')
local ds = require('Modul:Dátumszűrés')
local getArgs = require('Modul:Arguments').getArgs
local args = {}
local lang = mw.getContentLanguage()
local hibavan = false
-- ou hibakeresésre szolgáló globális változó, ami tartalmazza az analízisre
-- szolgáló üzeneteket, az alábbi pop() függvény gyűjtögeti a tartalmát
local popmax = 500 -- a tesztüzenetek számának maximuma
local oumarad = popmax
local ou = {}
local function pop(...) -- idézőjeles rész és bővítmények az ou számára
-- memóriatúllépést okozhat, csak teszteléshez
--[[local list = {...}
oumarad = oumarad - 1 -- előre csökkentjük, így mindig a maradék lehetséges pop hívások számát mutatja
if oumarad == 0 then return end -- hogy ne legyen memóriatúllépés
for _, var in pairs(list) do
table.insert(ou,tostring(var)..'\n')
mw.log(ou)
end --]]
end
-- Egy hibaüzenet kezelése.
-- Igazra állítja a hibavan változót és visszatér a megjeleníthető hibaüzenettel
-- @argument about: A hibaüzenet (string)
local function error(about)
hibavan = true
local r = about
if type( about ) == 'string' then
if #about == 0 then
r = 'Lua-hiba'
end
else
r = tostring( about )
end
return '<span class="error">' .. r .. '</span>, '
end
-- URL-ben nem használható paraméterek (szóköz, macskaköröm stb.) kódolása
local function encodeURL(url)
if type(url) ~= 'string' then
return url
end
url = string.gsub(url, '%s','%%20')
url = string.gsub(url, '"', '%%22')
url = string.gsub(url, "'", '%%27')
url = string.gsub(url, '<', '%%3c')
url = string.gsub(url, '>', '%%3e')
url = string.gsub(url, '%[','%%5b')
url = string.gsub(url, '%]','%%5d')
url = string.gsub(url, '{', '%%7b')
url = string.gsub(url, '|', '%%7c')
url = string.gsub(url, '}', '%%7d')
return url
end
local function isISSN(str)
local v, chsum
str = string.gsub(str, '–' , '-') -- nagykötőjelből kicsi lesz
str = string.gsub(str, '—' , '-') -- hetvenkvirtesből kicsi lesz
local i, j = string.find(str, '-')
if i == j and i == 5 then -- rendben, az ötödik helyen van a kötőjel
v = string.sub(str,1,4) .. string.sub(str,6,8)
chd = string.sub (str,-1,-1)
else
return false
end
if chd == 'X' or tonumber(chd) then
if chd == 'X' then
chnum = 10
else
chnum = string.byte(chd, 1) - string.byte('0', 1)
end
else
return false
end
if tonumber(v) then
chsum = 0
for j = 8, 2, -1 do
local elsbyte = string.byte(v, (9 - j))
chsum = chsum + (elsbyte - string.byte('0', 1)) * j
end
else
return false -- nem számjegyek
end
local chnumdo = 11 - (chsum % 11)
if chnumdo == chnum then
return true
else
return false
end
end
--CitWeb
--[[
{{citweb |url= |szerző= |szerző2= |szerző3= |cím= |alcím= |közreműködők=
{{citweb |url= |aut= |aut2= |aut3= |tit= |subtit= |ass= --Alternatív paraméterekkel
|weblap= |nyelvkód= |hely= |kiadó= |dátum= vagy év= |oldal= |elér=
|work= |lan= |loc= |red= |date= vagy ann= |pag= |accd=
|formátum= |méret= |archívurl= |archívdátum= |doi= |egyéb= |idézet= }}
|form= |siz= |aurl= |archd= |doi= |misc= |quote= }}
--]]
-- Egy sablonparaméter lekérdezése.
-- Az üres paramétereket nilként adja át.
-- A sablonhívásban fel kell sorolni a paraméterneveket:
-- pl. getArg('aut', 'szerző', 'author')
local function getArg(...)
for _, v in ipairs{...} do
if args[v] and args[v] ~= '' then
return args[v]
end
end
return nil
end
local url, szerzo, szerzo2, szerzo3, szerzo4, szerzo5, szerzo6, szerzo7, szerzo8, szerzo9
local cim, alcim, forditas_cime, datum, publication_date, outdatum, nyelv, lan, english
local ass,weblap,red,loc, publication_place, ev, ho,nap, oldal, deadurl, form,size,formsiz,aurl,archd,doi, isbn, issn, accd,misc,quote
local szerzolink,szerzolink2,szerzolink3,szerzolink4,szerzolink5,szerzolink6,szerzolink7,szerzolink8,szerzolink9
local month, year, origyear, at, template_doc_demo, _format, tipus, sorozat, nopp
-- local id, arxiv, _asin, _asin_tld, bibcode, doi_brokendate, jfm, jstor
-- local lccn, mr, oclc, ol, osti, pmc, embargo, pmid, rfc, ssrn, zbl
local layurl, laysource, laydate, author_mask, author_name_separator, author_separator
local display_authors, display_editors, lastauthoramp, postscript, separator
local function _nilez()
szerzo, szerzo2, szerzo3, szerzo4, szerzo5 = nil
szerzo6, szerzo7, szerzo8, szerzo9, cim, alcim = nil
ass, weblap, lan, loc, red, ev, datum, accd, form, size, aurl, archd, misc = nil
end
local function angol_parameterek()
local szerzo_csaladneve, szerzo2_csaladneve, szerzo3_csaladneve, szerzo4_csaladneve
local szerzo5_csaladneve, szerzo6_csaladneve, szerzo7_csaladneve, szerzo8_csaladneve, szerzo9_csaladneve
local szerzo_keresztneve, szerzo2_keresztneve, szerzo3_keresztneve, szerzo4_keresztneve
local szerzo5_keresztneve, szerzo6_keresztneve, szerzo7_keresztneve, szerzo8_keresztneve, szerzo9_keresztneve
local szerkeszto_csaladneve, szerkeszto2_csaladneve, szerkeszto3_csaladneve, szerkeszto4_csaladneve
local szerkeszto_keresztneve, szerkeszto2_keresztneve, szerkeszto3_keresztneve, szerkeszto4_keresztneve
cim = getArg('title')
datum = getArg('date')
accd = getArg('accessdate')
aurl = encodeURL(getArg('archiveurl'))
archd = getArg('archivedate')
weblap = getArg('website', 'work')
red = getArg('publisher')
szerzo_csaladneve = getArg('last', 'author', 'last1', 'author1', 'authors')
szerzo2_csaladneve = getArg('last2', 'author2')
szerzo3_csaladneve = getArg('last3', 'author3')
szerzo4_csaladneve = getArg('last4', 'author4')
szerzo5_csaladneve = getArg('last5', 'author5')
szerzo6_csaladneve = getArg('last6', 'author6')
szerzo7_csaladneve = getArg('last7', 'author7')
szerzo8_csaladneve = getArg('last8', 'author8')
szerzo9_csaladneve = getArg('last9', 'author9')
szerzo_keresztneve = getArg('first', 'first1')
szerzo2_keresztneve = getArg('first2')
szerzo3_keresztneve = getArg('first3')
szerzo4_keresztneve = getArg('first4')
szerzo5_keresztneve = getArg('first5')
szerzo6_keresztneve = getArg('first6')
szerzo7_keresztneve = getArg('first7')
szerzo8_keresztneve = getArg('first8')
szerzo9_keresztneve = getArg('first9')
if szerzo_csaladneve then
szerzo = szerzo_csaladneve
if szerzo_keresztneve then
szerzo = szerzo .. ', ' .. szerzo_keresztneve
end
end
if szerzo2_csaladneve then
szerzo2 = szerzo2_csaladneve
if szerzo2_keresztneve then
szerzo2 = szerzo2 .. ', ' .. szerzo2_keresztneve
end
end
if szerzo3_csaladneve then
szerzo3 = szerzo3_csaladneve
if szerzo3_keresztneve then
szerzo3 = szerzo3 .. ', ' .. szerzo3_keresztneve
end
end
if szerzo4_csaladneve then
szerzo4 = szerzo4_csaladneve
if szerzo4_keresztneve then
szerzo4 = szerzo4 .. ', ' .. szerzo4_keresztneve
end
end
if szerzo5_csaladneve then
szerzo5 = szerzo5_csaladneve
if szerzo5_keresztneve then
szerzo5 = szerzo5 .. ', ' .. szerzo5_keresztneve
end
end
if szerzo6_csaladneve then
szerzo6 = szerzo6_csaladneve
if szerzo6_keresztneve then
szerzo6 = szerzo6 .. ', ' .. szerzo6_keresztneve
end
end
if szerzo7_csaladneve then
szerzo7 = szerzo7_csaladneve
if szerzo7_keresztneve then
szerzo7 = szerzo7 .. ', ' .. szerzo7_keresztneve
end
end
if szerzo8_csaladneve then
szerzo8 = szerzo8_csaladneve
if szerzo8_keresztneve then
szerzo8 = szerzo8 .. ', ' .. szerzo8_keresztneve
end
end
if szerzo9_csaladneve then
szerzo9 = szerzo9_csaladneve
if szerzo9_keresztneve then
szerzo9 = szerzo9 .. ', ' .. szerzo9_keresztneve
end
end
szerzolink = getArg('authorlink', 'authorlink1', 'author-link1', 'author1-link', 'author1link')
if szerzolink then szerzo = '[[' .. szerzolink .. ']]' end
szerzolink2 = getArg('authorlink2', 'author2-link')
if szerzolink2 then szerzo2 = '[[' .. szerzolink2 .. ']]' end
szerzolink3 = getArg('authorlink3', 'author3-link')
if szerzolink3 then szerzo3 = '[[' .. szerzolink3 .. ']]' end
szerzolink4 = getArg('authorlink4', 'author4-link')
if szerzolink4 then szerzo4 = '[[' .. szerzolink4 .. ']]' end
szerzolink5 = getArg('authorlink5', 'author5-link')
if szerzolink5 then szerzo5 = '[[' .. szerzolink5 .. ']]' end
szerzolink6 = getArg('authorlink6', 'author6-link')
if szerzolink6 then szerzo6 = '[[' .. szerzolink6 .. ']]' end
szerzolink7 = getArg('authorlink7', 'author7-link')
if szerzolink7 then szerzo7 = '[[' .. szerzolink7 .. ']]' end
szerzolink8 = getArg('authorlink8', 'author8-link')
if szerzolink8 then szerzo8 = '[[' .. szerzolink8 .. ']]' end
szerzolink9 = getArg('authorlink9', 'author9-link')
if szerzolink9 then szerzo9 = '[[' .. szerzolink9 .. ']]' end
datum = getArg('date', 'year')
origyear = getArg('origyear')
ass = getArg('others')
lan = getArg('language')
cim = getArg('title')
forditas_cime = getArg('trans_title')
loc = getArg('place','location')
red = getArg('publisher')
publication_date = getArg('publication-date')
if publication_date then
if select(2, ds.datumszuro(publication_date)) == select(2, ds.datumszuro(datum)) then
publication_date = nil
else
datum = publication_date
end
end -- csak akkor tekintjük létezőnek, ha különbözik a dátumtól
publication_place = getArg('publication-place')
szerkeszto_csaladneve = getArg('editor-last','editor1-last', 'editor', 'editors')
szerkeszto_keresztneve = getArg('editor-first', 'editor1-first')
szerkeszto2_csaladneve = getArg('editor2-last')
szerkeszto2_keresztneve = getArg('editor2-first')
szerkeszto3_csaladneve = getArg('editor3-last')
szerkeszto3_keresztneve = getArg('editor3-first')
szerkeszto4_csaladneve = getArg('editor4-last')
szerkeszto4_keresztneve = getArg('editor4-first')
local szerkesztok = {}
if szerkeszto_csaladneve then
szerkeszto = szerkeszto_csaladneve
if szerkeszto_keresztneve then
szerkeszto = szerkeszto .. ', ' .. szerkeszto_keresztneve
end
table.insert(szerkesztok, szerkeszto)
end
if szerkeszto2_csaladneve then
szerkeszto2 = szerkeszto2_csaladneve
if szerkeszto2_keresztneve then
szerkeszto2 = szerkeszto2 .. ', ' .. szerkeszto2_keresztneve
end
table.insert(szerkesztok, szerkeszto2)
end
if szerkeszto3_csaladneve then
szerkeszto3 = szerkeszto3_csaladneve
if szerkeszto3_keresztneve then
szerkeszto3 = szerkeszto3 .. ', ' .. szerkeszto3_keresztneve
end
table.insert(szerkesztok, szerkeszto3)
end
if szerkeszto4_csaladneve then
szerkeszto4 = szerkeszto4_csaladneve
if szerkeszto4_keresztneve then
szerkeszto4 = szerkeszto4 .. ', ' .. szerkeszto4_keresztneve
end
table.insert(szerkesztok, szerkeszto4)
end
if #szerkesztok > 0 then
szerkeszto = 'szerk.: ' .. table.concat(szerkesztok, ' – ')
end
oldal = getArg('page', 'pages')
nopp = getArg('nopp')
if not oldal then
at = getArg('at')
end
deadurl = getArg(' deadurl')
template_doc_demo = (getArg('template doc demo') == 'true')
_format = getArg('format')
if _format then
_format= '( '.._format..') '
end
isbn = getArg('isbn')
issn = getArg('issn')
--Quote
quote = getArg('quote')
doi = getArg('doi')
tipus = getArg('type')
sorozat = getArg('series', 'version')
if sorozat then
sorozat = 'Sorozat: ' .. sorozat .. ' '
else
sorozat = getArg('agency')
end
--[[ nem használja semmi
id = getArg('id')
if not id then
arxiv = getArg('arxiv')
_asin = getArg('asin')
_asin_tld = getArg('asin-tld')
bibcode = getArg('bibcode')
doi_brokendate = getArg('doi_brokendate')
jfm = getArg('jfm')
jstor = getArg('jstor')
lccn = getArg('lccn')
mr = getArg('mr')
oclc = getArg('oclc')
ol = getArg('ol')
osti = getArg('osti')
pmc = getArg('pmc')
embargo = getArg('embargo')
pmid = getArg('pmid')
rfc = getArg('rfc')
ssrn = getArg('ssrn')
zbl = getArg('zbl')
end
--]]
--Laysummary
layurl = getArg('layurl')
laysource = getArg('laysource')
laydate = getArg('laydate')
--Display options
author_mask = getArg('author-mask')
author_name_separator = getArg('author-name-separator')
author_separator = getArg('author-separator')
display_authors = getArg('display-authors')
display_editors = getArg('display-editors')
lastauthoramp = getArg('lastauthoramp')
postscript = getArg('postscript')
separator = getArg('separator')
end
local function magyar_e()
local function cleanArg(...)
local arg = getArg(...)
if arg then
return (string.gsub(arg, '[%[%]]', ''))
else
return nil
end
end
url = getArg('url')
szerzo = getArg('szerző', 'aut' )
szerzo2 = getArg('szerző2', 'aut2')
szerzo3 = getArg('szerző3', 'aut3')
szerzo4 = getArg('szerző4', 'aut4')
szerzo5 = getArg('szerző5', 'aut5')
szerzo6 = getArg('szerző6', 'aut6')
szerzo7 = getArg('szerző7', 'aut7')
szerzo8 = getArg('szerző8', 'aut8')
szerzo9 = getArg('szerző9', 'aut9')
cim = getArg('cím', 'tit')
alcim = getArg('alcím', 'subtit')
ass = getArg('ass', 'közreműködők')
weblap = getArg('weblap', 'work')
lan = getArg('lan', 'nyelvkód')
loc = getArg('loc', 'hely')
red = getArg('red', 'kiadó')
ev = cleanArg('év', 'ann')
datum = cleanArg('dátum', 'date')
oldal = getArg('oldal', 'pag')
accd = cleanArg('elér', 'accd')
form = getArg('form', 'formátum')
size = getArg('siz', 'méret')
aurl = getArg('aurl', 'archívurl')
archd = cleanArg('archd', 'archívdátum')
doi = getArg('doi')
misc = getArg('egyéb', 'misc')
quote = getArg('quote', 'idézet')
local x = szerzo or szerzo2 or szerzo3 or szerzo4 or szerzo5 or szerzo6
or szerzo7 or szerzo8 or szerzo9 or cim or alcim or ass or lan or loc
or red or ev or accd or form or size or aurl or archd or misc
return (x ~= nil)
end
local function _citweb()
_nilez()
local hiba_jelzes = nil
local igen_magyar = magyar_e()
if not igen_magyar then
angol_parameterek()
end
hiba_jelzes = ''
-- a szerzőket előre lépteti, társszerzőből szerzőt csinál stb.
local szerzok = {}
if szerzo then
table.insert(szerzok, szerzo)
end
if szerzo2 then
table.insert(szerzok, szerzo2)
end
if szerzo3 then
table.insert(szerzok, szerzo3)
end
if szerzo4 then
table.insert(szerzok, szerzo4)
end
if szerzo5 then
table.insert(szerzok, szerzo5)
end
if szerzo6 then
table.insert(szerzok, szerzo6)
end
if szerzo7 then
table.insert(szerzok, szerzo7)
end
if szerzo8 then
table.insert(szerzok, szerzo8)
end
if szerzo9 then
table.insert(szerzok, szerzo9)
end
if #szerzok > 0 then
szerzo = table.concat(szerzok, ' – ') .. ': '
else
szerzo = nil
end
--cím és alcím
local terminator
if cim then
cim = mw.text.trim(lang:ucfirst(cim))
else
hiba_jelzes = hiba_jelzes .. error('nincs elsődleges cím')
end
if cim and alcim then
alcim = lang:ucfirst(alcim)
if string.sub(cim, -1, -1) ~= ':' then
cim = cim .. ': ' .. alcim
else
cim = cim .. ' ' .. alcim
end
end
if cim then
terminator = string.sub(cim, -1, -1)
if terminator ~= '?' and terminator ~= '!' and terminator ~= ',' and terminator ~= '.' and terminator ~= '\166' then
cim = cim .. '.'
end
-- SZÜKSÉGES CSERÉK:
--newline [ ] | Ezek kellenek, mert az URL ráhúzásakor bezavarnak
--space [ ] |
if forditas_cime then
cim = cim .. ' [' .. forditas_cime .. '] '
end
cim = string.gsub(cim, '\n', ' ')
cim = string.gsub(cim, '%[', '[')
cim = string.gsub(cim, '%]', ']')
cim = string.gsub(cim, '%|', '|')
end
-- asszisztencia
if ass then
ass = lang:ucfirst(ass) .. ' '
end
url = getArg('url'); --pop('url', url)
url = encodeURL(url)
-- weblap
-- pop('weblap', weblap or 'nincs eddig')
local function weboldalkereso(rest)
local wl,j,i
--pop("maradek="..rest)
j, i = string.find(rest, '/')
if i then
wl = string.sub(rest, 1, i-1)
--pop("weblap="..wl)
else
wl = rest
end
return wl
end
if not(weblap) then -- ha nincs megadva
if url then
local maradek, i,j
j, i = string.find(url, '//')
--pop("j és i=",j,i)
if i then
maradek = string.sub(url, i+1, -1)
--pop("maradek1=",maradek)
weblap = weboldalkereso (maradek)
else
i = nil
j, i = string.find(url, ':')
if i then
maradek = string.sub(url, i+1, -1) -- kett0spont ös a k0vetü / utäni rösz egösze
maradek = string.gsub(maradek, "^/",'')
--pop("maradek : utän=",maradek)
weblap = weboldalkereso (maradek)
else
error ("helytelen url szerkezet")
--pop("helytelen url szerkezet")
weblap = "?weblap?"
--pop("weblap= ",weblap)
end --if i belsü
end -- if i kßlsü
else
error ("nincs url")
weblap = "?weblap?"
--pop("weblap nem volt=" ,weblap)
end -- if url
-- pop ("weblap a végén= ",weblap)
end -- if nincs weblap megadva
-- nyelv kezelése
if lan then
local nyelvek,hibak,nyomok = nil
nyelvek,hibak,nyomok = nyksz.nyelvszuro(lan)
if hibak then
pop("kapott hibalista=", nyomok)
hiba_jelzes = hiba_jelzes .. ' ' ..error(hibak ..'hibás nyelvkód')
end
if nyelvek then
pop("kapott nyelvlista=", nyelvek)
lan = nyelvek
end
if nyomok then
pop("nyomkövetés a nyelvszűrésen belül=", nyomok)
end
if not(weblap) then
hiba_jelzes = hiba_jelzes .. ' ' .. error('nyelv weblap nélkül')
end
if cim == nil then
hiba_jelzes = hiba_jelzes .. ' ' .. error('nyelv cím nélkül')
end
end --if lan
-- loc, red
local kiadas = loc
if red then
kiadas = (kiadas and kiadas .. ': ' or '') .. red
end
if kiadas and nyelv then
nyelv = nyelv .. '.'
elseif kiadas and weblap then
weblap = weblap .. '.'
end
-- form és size
local c = ''
if form then
c = form
end
if size then
if string.sub(size, -5, -1) == 'oldal' then
size = string.sub(size, 1, -6)
end
if c ~= '' then
c = c .. ': ' .. size .. ' oldal '
else
c = size .. ' oldal '
end
end
if c ~= '' then
formsiz = '(' .. c .. ')'
end
if ev and not datum then
datum = ev -- ha nincs dátum, akkor az év legyen a dátum
end
if datum then -- ha van dátum (most már vagy a dátum, vagy ennek hiányában az év)
local nyom =''
local nyom, dou = ds.datumszuro(datum)
if dou then
outdatum = '(' .. ds.honapnevesdate(dou) .. ') '
else
hiba_jelzes = hiba_jelzes .. ' ' .. error('hibás dátum')
end
end
-- oldaladatok
if oldal then
oldal = string.gsub(oldal, '-' , '–') -- kiskötőjelből nagy
oldal = string.gsub(oldal, '—' , '–') -- hetvenkvirtesből nagy
oldal = string.gsub(oldal, '%.,', ',') -- pontot követő veszőből vesszőt
oldal = string.gsub(oldal, '%.', '' ) -- pontból üreset
oldal = string.gsub(oldal, ',', '.,') -- végül vesszőből ponot követő vesszőt
if nopp == 'y' then
oldal = ' ' .. oldal
else
oldal = ' ' .. oldal .. '. o. '
end
end
-- Archiválva
aurl = encodeURL(aurl)
if archd then -- ha van dátum
local outarchd, dou
dou = select(2, ds.datumszuro(archd))
if dou then
outarchd = ds.honapnevesdate(dou)
if aurl then
archd = '<span title="' .. outarchd .. '">[' .. aurl .. ' arch]</span>'
else
hiba_jelzes = hiba_jelzes .. ' ' .. error('archívdátum van, de archívurl nélkül')
end
else
hiba_jelzes = hiba_jelzes .. ' ' .. error('hibás archívdátum')
end -- if dou
end -- if archd
-- elérés
if not accd then
accd = getArg('accessdate')
end
if accd then -- ha van elérés
local outaccd, dou
dou = select(2, ds.datumszuro(accd))
if dou then
outaccd = ds.honapnevesdate(dou)
accd = '(Hozzáférés: ' .. outaccd .. ')'
else
hiba_jelzes = hiba_jelzes .. ' ' .. error('hibás elérés')
end -- if dou
end -- if accd
if issn then
if isISSN (issn) then
issn = '<span title="' .. issn .. '" style="color:blue;">ISSN</span>'
else
hiba_jelzes = hiba_jelzes .. ' ' .. error('hibás ISSN: ') .. issn
end
else
issn = '' -- ha nem létezik, legyen üres
end
isbn = getArg('isbn'); pop('isbn=', isbn)
if isbn then
local isbn_helyes, hibas
isbn_helyes, isbn, hibas = require('Modul:CheckISBN').isISBN(isbn, true) -- linkelve az ISBN-ek
if not isbn_helyes then
hiba_jelzes = hiba_jelzes .. ' ' .. error('hibás ISBN: ') .. isbn
end
end
if doi then
local doicontrol
doicontrol = string.sub(doi,1,2)
if doicontrol ~= '10' then
hiba_jelzes = hiba_jelzes .. ' ' .. error('doi kötelezően 10-zel kezdődik!')
else
doi = '<span title="' .. doi .. '">[http://dx.doi.org/' .. doi .. ' doi]</span>'
end
end
-- misc lekezelése
if misc then
misc = misc .. '.'
end
-- URL lekezelése
if url and cim then
url = encodeURL(url)
if deadurl and deadurl ~= 'no' and aurl then
cim = '[' .. aurl .. ' ' .. cim .. ']'
else
cim = '[' .. url .. ' ' .. cim .. ']'
end
end
--idézet
if quote then
quote = " ''„" .. quote .. "”''"
end
-- eredmény összeállítása
local s = {}
local function tabla(x)
if x then
table.insert(s, x)
end
end
local mi = nil
if igen_magyar then
tabla(szerzo)
tabla(cim)
tabla(ass)
tabla(weblap)
tabla(lan)
tabla(kiadas)
tabla(outdatum)
tabla(oldal)
tabla(accd)
tabla(formsiz)
tabla(archd)
tabla(doi)
tabla(misc)
tabla(quote)
tabla(isbn)
if ou and #ou > 0 then mi = table.concat(ou,'{}') end
if mi then tabla(mi ) end --nyomkövetésnél kell
else
tabla(szerzo)
tabla(cim)
tabla(_format)
tabla(lan)
if tipus then table.insert(s, ' (' .. tipus .. ')') end
tabla(ass)
tabla(weblap)
tabla(kiadas)
tabla(outdatum)
if origyear then table.insert(s, ' (' .. origyear .. ')') end
tabla(oldal)
tabla(at)
tabla(sorozat)
tabla(accd)
tabla(formsiz)
tabla(archd)
tabla(doi)
tabla(isbn)
tabla(issn)
if ou and #ou > 0 then mi = table.concat(ou,'{}') end
if mi then tabla(mi ) end --nyomkövetésnél kell
end
if hibavan and (igen_magyar or not template_doc_demo) then
table.insert(s, hiba_jelzes .. '[[Kategória:Hibás paraméterezésű CitWeb sablont tartalmazó lapok]]')
end
local text
text=table.concat(s, ' ')
return mw.text.trim(text)
end --citweb
local function run(frame)
args = getArgs(frame)
return _citweb()
end
--[[--------------------------< F O R M A T _ S C R I P T _ V A L U E >----------------------------------------
|script-title= holds title parameters that are not written in Latin-based scripts: Chinese, Japanese, Arabic, Hebrew, etc. These scripts should
not be italicized and may be written right-to-left. The value supplied by |script-title= is concatenated onto Title after Title has been wrapped
in italic markup.
Regardless of language, all values provided by |script-title= are wrapped in <bdi>...</bdi> tags to isolate RTL languages from the English left to right.
|script-title= provides a unique feature. The value in |script-title= may be prefixed with a two-character ISO 639-1 language code and a colon:
|script-title=ja:*** *** (where * represents a Japanese character)
Spaces between the two-character code and the colon and the colon and the first script character are allowed:
|script-title=ja : *** ***
|script-title=ja: *** ***
|script-title=ja :*** ***
Spaces preceding the prefix are allowed: |script-title = ja:*** ***
The prefix is checked for validity. If it is a valid ISO 639-1 language code, the lang attribute (lang="ja") is added to the <bdi> tag so that browsers can
know the language the tag contains. This may help the browser render the script more correctly. If the prefix is invalid, the lang attribute
is not added. At this time there is no error message for this condition.
Supports |script-title=, |script-chapter=, |script-<periodical>=
]]
local function format_script_value (frame)
local script_value = mw.ustring.match(frame.args[1] or '', '^%s*(.-)%s*$')
if not script_value or script_value == '' then
return nil
end
local script_param = 'script-title'
local sandbox = ''
local cfg = mw.loadData ('Module:Citation/CS1/Configuration' .. sandbox); -- load sandbox versions of support modules when {{#invoke:Citation/CS1/sandbox|...}}; live modules else
local utilities = require ('Module:Citation/CS1/Utilities' .. sandbox);
utilities.set_selected_modules(cfg)
local lang=''; -- initialize to empty string
local name;
if script_value:match('^%l%l%l?%s*:') then -- if first 3 or 4 non-space characters are script language prefix
lang = script_value:match('^(%l%l%l?)%s*:%s*%S.*'); -- get the language prefix or nil if there is no script
if not utilities.is_set (lang) then
utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['missing title part']}); -- prefix without 'title'; add error message
return ''; -- script_value was just the prefix so return empty string
end
-- if we get this far we have prefix and script
name = cfg.lang_tag_remap[lang] or mw.language.fetchLanguageName( lang, cfg.this_wiki_code ); -- get language name so that we can use it to categorize
if utilities.is_set (name) then -- is prefix a proper ISO 639-1 language code?
script_value = script_value:gsub ('^%l+%s*:%s*', ''); -- strip prefix from script
-- is prefix one of these language codes?
if utilities.in_array (lang, cfg.script_lang_codes) then
utilities.add_prop_cat ('script', {name, lang})
else
utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['unknown language code']}); -- unknown script-language; add error message
end
lang = ' lang="' .. lang .. '" '; -- convert prefix into a lang attribute
else
utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['invalid language code']}); -- invalid language code; add error message
lang = ''; -- invalid so set lang to empty string
end
else
utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['missing prefix']}); -- no language code prefix; add error message
end
script_value = utilities.substitute (cfg.presentation['bdi'], {lang, script_value}); -- isolate in case script is RTL
return script_value;
end
return {
run = run, -- az egyetlen átadandó függvény
format_script_value = format_script_value -- [[Sablon:Cite web]] használja
}