„Modul:CheckISBN” változatai közötti eltérés
Megjelenés
[ellenőrzött változat] | [ellenőrzött változat] |
Tartalom törölve Tartalom hozzáadva
j |
Bot: Modul:No globals helyett require('strict') |
||
(26 közbenső módosítás, amit 2 másik szerkesztő végzett, nincs mutatva) | |||
1. sor: | 1. sor: | ||
require('strict') |
|||
local args = {} |
|||
local lang = mw.getContentLanguage() |
|||
local args = {} |
|||
local ou = '' |
local ou = '' |
||
function pop( |
local function pop(...) -- idézőjeles rész és bővítmények az ou számára |
||
-- Ha nem kell, ne zabálja a memóriát |
|||
if not mi then return else ou = ou..mi..'\n ' end |
|||
do return end |
|||
if not mv1 then return else ou = ou..mv1..'\n' end |
|||
local mi = {...} |
|||
if not mv2 then return else ou = ou..mv2..'\n' end |
|||
for _, v in ipairs(mi) do |
|||
if not mv3 then return else ou = ou..mv3..'\n' end |
|||
ou = ou .. v .. '\n' |
|||
mw.log(v) |
|||
if not mv5 then return else ou = ou..mv5..'\n' end |
|||
end |
|||
end |
end |
||
local hibavan = false |
|||
local |
local kategorizalas_van = false |
||
if type( str ) ~= "string" or str == nil then |
|||
local function error(kategorizalas_kell, about) |
|||
return '' |
|||
-- Enclose errorMsg with <span> |
|||
else return (str:gsub("^%s*(.-)%s*$", "%1")) |
|||
-- Precondition: |
|||
end -- extra brackets are necessary because gsub returns multiple values |
|||
-- about -- string |
|||
hibavan = true |
|||
if kategorizalas_kell then |
|||
kategorizalas_van = true |
|||
end |
|||
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 |
end |
||
function |
local function isISBN10(str) |
||
local v, chsum, chnum, chd, i, j, chnumdo, eloirt_hossz |
|||
if type(v) == 'string' then |
|||
v = str:gsub('[^%d]', '') -- a decimális jegyeken kívül mindent figyelmen kívül hagyunk |
|||
v = mw.ustring.gsub(v, '\n', '\\n') |
|||
pop('10', v) |
|||
if mw.ustring.match(mw.ustring.gsub(v, '[^\'"]', ''), '^"+$') then |
|||
chd = str:sub(-1, -1) -- check digit az utólsó |
|||
return "'" .. v .. "'" |
|||
pop(chd) |
|||
end |
|||
if chd == 'X' or chd == 'x' or tonumber(chd) ~= nil then |
|||
return '"' .. mw.ustring.gsub(v, '"', '\\"' ) .. '"' |
|||
if chd == 'X' or chd == 'x' then |
|||
else |
|||
chnum = 10 |
|||
return type(v) == 'table' and table_to_str(v) or tostring(v) |
|||
eloirt_hossz = 9 |
|||
end |
|||
else |
|||
end |
|||
chnum = string.byte(chd, 1) - string.byte('0', 1) |
|||
eloirt_hossz = 10 |
|||
hibavan = false |
|||
end |
|||
kategorizalas_van = false |
|||
else |
|||
return false |
|||
function error(kategorizalas_kell,about ) |
|||
end |
|||
-- Enclose errorMsg with <span> |
|||
pop(chd, chnum) |
|||
-- Precondition: |
|||
-- about -- string |
|||
if #v ~= eloirt_hossz then -- kötőjelek nélkül 10 karakter hosszúnak kell lennie |
|||
hibavan = true |
|||
return false |
|||
if kategorizalas_kell then kategorizalas_van = true end |
|||
end |
|||
local r = about |
|||
v = v:sub(1, 9) |
|||
if type( about ) == "string" then |
|||
if #about == 0 then |
|||
pop(v, chd) |
|||
r = "Error in Lua" |
|||
end |
|||
pop(chnum) |
|||
else |
|||
chsum = 0 |
|||
r = tostring( about ) |
|||
for j = 10, 2, -1 do |
|||
end |
|||
local elsbyte = string.byte(v, (11 - j)) |
|||
return "<small><font color=\"black\">" ..' ('.. r..') ' .. "</font></small> " |
|||
chsum = chsum + (elsbyte - string.byte('0', 1)) * (11 - j) |
|||
end -- error() |
|||
end |
|||
pop(chsum) |
|||
chnumdo = chsum % 11 |
|||
pop(chnumdo) |
|||
local function getArg(le,arg,alternativarg, assign ) |
|||
if chnumdo == chnum then |
|||
-- Retrieve template argument |
|||
return true |
|||
-- Precondition: |
|||
else |
|||
-- le true értékkel jelzi, hogy levágható a paraméter végéről a felesleges vessző és pont |
|||
return false |
|||
-- arg -- string or number; argument identifier |
|||
end |
|||
-- alternativarg -- a paraméternek a másik neve |
|||
-- assign -- any, optional; default value |
|||
local r1 = args[ arg ] |
|||
local r2 = nil |
|||
if alternativarg ~= nil then r2 = args[ alternativarg ] end |
|||
if r1 == '' or r1 ==nil then r = r2 else r = r1 end |
|||
if r == '' then r = nil end |
|||
if type( r ) ~= "string" then |
|||
if type( assign ) == nil then |
|||
r = "{{{<" .. arg .. ">}}}" --ha r nem string tipus, azaz és assign nil érték |
|||
else |
|||
r = assign -- ha r nem string tipus, és assign nem nil |
|||
end |
|||
else -- r típusa string |
|||
if #r > 1 then -- ha r strint típus és legalább két karaktert tartalmaz |
|||
local utso_karakter = string.sub(r,-1,-1); |
|||
if le then |
|||
if utso_karakter == '.' or utso_karakter == ',' then r=string.sub(r,1,-2) end --lecsípjük az utólsó pontot, vagy vesszőt |
|||
end |
|||
end |
|||
end |
|||
return r |
|||
end |
end |
||
local function isISBN13(str) |
|||
local function getConf(conf,alternativconf, assign ) -- itt eredetileg a frame nem paraméter |
|||
local v, chsum, chnum, chd, i, j, chnumdo |
|||
-- Retrieve template argument |
|||
v = str:gsub('[^%d]', '') -- a decimális jegyeken kívül mindent figyelmen kívül hagyunk |
|||
-- Precondition: |
|||
pop('v_1', v) |
|||
-- le true értékkel jelzi, hogy levágható a paraméter végéről a felesleges vessző és pont |
|||
chd = str:sub(-1, -1) -- check digit az utolsó |
|||
-- arg -- string or number; argument identifier |
|||
pop('chd_2', chd) |
|||
-- alternativarg -- a paraméternek a másik neve |
|||
if tonumber(chd) ~= nil then |
|||
-- assign -- any, optional; default value |
|||
chnum = string.byte(chd, 1) - string.byte('0', 1) |
|||
else |
|||
local r1 = config[ conf ] |
|||
return false |
|||
local r2 = nil |
|||
end |
|||
if alternativconf ~= nil then r2 = config[ alternativconf ] end |
|||
pop('chd_3, chnum_1', chd, chnum) |
|||
if r1 == '' or r1 ==nil then r = r2 else r = r1 end |
|||
if r == '' then r = nil end |
|||
if #v ~= 13 then -- kötőjelek nélkül 13 karakter hosszúnak kell lennie |
|||
if type( r ) ~= "string" then |
|||
return false |
|||
if type( assign ) == nil then |
|||
end |
|||
r = "{{{<" .. conf .. ">}}}" --ha r nem string tipus, azaz és assign nil érték |
|||
v = string.sub(v, 1, 12) |
|||
else |
|||
r = assign -- ha r nem string tipus, és assign nem nil |
|||
pop(v, chd) |
|||
end |
|||
else -- r típusa string |
|||
local elsbyte |
|||
chsum = 0 |
|||
end |
|||
for j = 1, 12 do -- z_13 = (10 - Summa (i=1,12) (z_i*(3^((i+1)%2))%10) %10 |
|||
return r |
|||
elsbyte = string.byte(v, j); |
|||
--pop(elsbyte) |
|||
chsum = chsum + (elsbyte - string.byte('0', 1)) * 3^((j+1)%2) |
|||
--pop(3^((j+1)%2)) |
|||
end |
|||
pop(chsum) |
|||
chnumdo = (10 - chsum % 10) % 10 |
|||
pop(chnumdo) |
|||
if chnumdo == chnum then |
|||
pop("true") |
|||
return true |
|||
else |
|||
pop("true") |
|||
return false |
|||
end |
|||
end |
end |
||
local function isISBN10( str) |
|||
local v,chsum,chnum,chd,i,j,chnumdo,eloirt_hossz |
|||
v='' |
|||
for w in string.gmatch(str, "%d") do -- a decimális jegyeken kívül mindent figyelmen kívül hagyunk |
|||
v=v..w |
|||
end |
|||
pop("10",v) |
|||
chd = string.sub (str,-1,-1); -- check digit az utólsó |
|||
pop(chd) |
|||
if chd == 'X' or chd == 'x' or tonumber(chd) ~= nil then |
|||
if chd == 'X' or chd == 'x' then chnum = 10; eloirt_hossz=9 else chnum = string.byte(chd,1) - string.byte('0',1);eloirt_hossz=10 end |
|||
else |
|||
return false |
|||
end |
|||
pop(chd,chnum) |
|||
if #v ~= eloirt_hossz then return false end -- kötőjelek nélkül a hossz 10 kell,hogy legyen |
|||
v=string.sub(v,1,9) -- |
|||
pop(v, chd) |
|||
pop(chnum) |
|||
chsum = 0 |
|||
for j = 10,2,-1 do |
|||
local elsbyte = string.byte(v,(11 - j)) |
|||
chsum = chsum + (elsbyte - string.byte('0',1)) * (11-j) |
|||
end -- j ciklus |
|||
pop(chsum) |
|||
if chsum % 11 == 0 then chnumdo=0 else chnumdo = (chsum % 11) end |
|||
pop(chsum%11) |
|||
pop(chnumdo) |
|||
if chnumdo == chnum then return true else return false end |
|||
end -- isISBN10 |
|||
local function isISBN13( str) |
|||
local v,chsum,chnum,chd,i,j,chnumdo,eloirt_hossz |
|||
v='' |
|||
for w in string.gmatch(str, "%d") do -- a decimális jegyeken kívül mindent figyelmen kívül hagyunk |
|||
v=v..w |
|||
end |
|||
pop("v_1",v) |
|||
chd = string.sub (str,-1,-1); -- check digit az utólsó |
|||
pop("chd_2",chd) |
|||
if tonumber(chd) ~= nil then |
|||
chnum = string.byte(chd,1) - string.byte('0',1) |
|||
else |
|||
return false |
|||
end |
|||
pop("chd_3, chnum_1",chd,chnum) |
|||
if #v ~= 13 then return false end -- kötőjelek nélkül a hossz 10 kell,hogy legyen |
|||
v=string.sub(v,1,12) -- |
|||
pop(v, chd) |
|||
local elsbyte |
|||
chsum = 0 |
|||
for j = 1,12 do -- z_13 = (10 - Summa (i=1,12) (z_i*(3^((i+1)%2))%10) %10 |
|||
elsbyte = string.byte(v,j); |
|||
--pop(elsbyte) |
|||
chsum = chsum + (elsbyte - string.byte('0',1)) * 3^((j+1)%2) |
|||
--pop(3^((j+1)%2)) |
|||
end -- j ciklus |
|||
pop(chsum) |
|||
chnumdo= chsum%10 |
|||
chnumdo=(10-chnumdo) %10 |
|||
pop(chnumdo) |
|||
if chnumdo == chnum then pop("true");return true else pop("true"); return false end |
|||
end -- isISBN13 |
|||
local function isI(str) |
local function isI(str) |
||
local v, eloirt_hossz |
|||
v = str:gsub('[^%dXx]', '') -- a decimális jegyeken kívül mindent figyelmen kívül hagyunk |
|||
v='' |
|||
pop(v) |
|||
for w in string.gmatch(str, "[%dXx]") do -- a decimális jegyeken kívül mindent figyelmen kívül hagyunk |
|||
eloirt_hossz = 10 |
|||
v=v..w |
|||
pop('előírt hossza', eloirt_hossz) |
|||
end |
|||
if #v == eloirt_hossz then |
|||
pop(v) |
|||
pop('tízes') |
|||
eloirt_hossz=10 |
|||
return isISBN10(str) |
|||
pop("előírt hossza",eloirt_hossz) |
|||
elseif #v > eloirt_hossz then |
|||
pop('tizenhármas') |
|||
pop("tizes");return isISBN10(str) |
|||
return isISBN13(str) |
|||
elseif #v > eloirt_hossz then |
|||
else |
|||
pop("tizenhármas");return isISBN13(str) |
|||
return false |
|||
end |
end |
||
end |
|||
end --function isI(str) |
|||
local function isISBN( |
local function isISBN(str, link, no_isbn) |
||
if type(str) ~= 'string' then |
|||
local i,j |
|||
return error(false, 'Nem string bemenet az isISBN függvénynek') |
|||
local vizsgalandok={} |
|||
end |
|||
str=string.gsub(str,'[%a<>%[%]%-%(%)%/%=%"]','') |
|||
local vizsgalandok = {} |
|||
str=string.gsub(str,"ó",'') |
|||
str = str:gsub('[^%d%,Xx -]', '') -- minden ki, ami nem számjegy, vessző, X/x, szóköz vagy kötőjel |
|||
pop("str a ballaszt nélkül",str) |
|||
--[=[ |
|||
for w in string.gmatch(str, "[^%,]+") do |
|||
local elso_szelet, masodik_szelet |
|||
w=trim(w) |
|||
elso_szelet = string.sub(str,1,-2) |
|||
pop("w",w.."\n") |
|||
masodik_szelet = string.sub(str,-1,-1) |
|||
table.insert(vizsgalandok,w); |
|||
pop("elso_szelet, masodik_szelet",elso_szelet,masodik_szelet) |
|||
end |
|||
local s='' |
|||
if masodik_szelet == 'X' then |
|||
local h='' |
|||
elso_szelet=string.gsub(elso_szelet,'[%a<>%[%]%-%(%)%/%=%"]','') -- (str,'[^%d%,X,x]','') |
|||
local helyes=true |
|||
elso_szelet=string.gsub(elso_szelet,"ó",'') |
|||
for i=1,#vizsgalandok do |
|||
str = elso_szelet .. masodik_szelet |
|||
if isI(vizsgalandok[i]) then s=s..' ISBN '..vizsgalandok[i]..',' |
|||
else |
|||
pop("helyes előrehaladása",s) |
|||
str=string.gsub(str,'[%a<>%[%]%-%(%)%/%=%"]','') -- (str,'[^%d%,X,x]','') |
|||
else helyes=false;h=h..' '..error(true,"helytelen ISBN kód")..':'..vizsgalandok[i]..',' |
|||
str=string.gsub(str,"ó",'') |
|||
pop("hibás előrehaladása",h) |
|||
end |
|||
--]=] |
|||
end |
|||
pop('str a ballaszt nélkül', str) |
|||
return helyes, string.sub(s,1,-2) , string.sub(h,1,-2) |
|||
for w in str:gmatch('[^%,]+') do |
|||
w = mw.text.trim(w) |
|||
pop('w', w .. '\n') |
|||
if w ~= '' then |
|||
table.insert(vizsgalandok, w) |
|||
end |
|||
end |
|||
local s = {} |
|||
local s_nyers = {} |
|||
local h = {} |
|||
local h_nyers = {} |
|||
local helyes = true |
|||
local formatstring |
|||
if link and no_isbn then |
|||
formatstring = '[[Speciális:Könyvforrások/%s|%s]]' |
|||
elseif link then |
|||
formatstring = '[[Speciális:Könyvforrások/%s|ISBN %s]]' |
|||
elseif no_isbn then |
|||
formatstring = '%s' |
|||
else |
|||
formatstring = 'ISBN %s' |
|||
end |
|||
for _, vi in ipairs(vizsgalandok) do |
|||
if isI(vi) then |
|||
table.insert(s, string.format(formatstring, vi:gsub('[ -]', ''), vi:gsub(' ', ' '))) |
|||
table.insert(s_nyers, vi) |
|||
pop('helyes előrehaladása', table.concat(s, ', ')) |
|||
else |
|||
helyes = false |
|||
table.insert(h, error(true, 'helytelen ISBN kód') .. ': ' .. vi) |
|||
table.insert(h_nyers, vi) |
|||
pop('hibás előrehaladása', table.concat(h, ', ')) |
|||
end |
|||
end |
|||
s = table.concat(s, ', ') |
|||
h = table.concat(h, ', ') |
|||
return helyes, s, h, s_nyers, h_nyers |
|||
end -- isISBN |
end -- isISBN |
||
local function _checkISBN(args) |
|||
local function _checkISBN(frame) |
|||
local jo_lista, mind |
local jo_lista, mind |
||
local alkategoriak = {} |
local alkategoriak = {} |
||
local isbn |
local isbn = args[1] |
||
local link = (args.link ~= nil) |
|||
local no_isbn = (args['isbn szöveg nélkül'] ~= nil) |
|||
local hiba_jelzes = '' |
local hiba_jelzes = '' |
||
local milyen_lista = args[2] |
|||
isbn = getArg(true,1) |
|||
milyen_lista = getArg(true,2) |
|||
pop('a kapott argumentum', isbn) |
|||
pop('linkelve?', tostring(link)) |
|||
-- ISBN lekezelése |
|||
if isbn then |
|||
pop('van isbn paraméter', isbn) |
|||
--isbn=string.gsub(isbn,"ISBN",'') -- a beleírt ISBN szövegeket kivesszük |
|||
local helyes |
|||
helyes, isbn, hiba_jelzes = isISBN(isbn, link, no_isbn) |
|||
if helyes then |
|||
pop('helyesek a paraméterek') |
|||
end |
|||
end |
|||
pop("a kapott argumentum", isbn) |
|||
-- ISBN lekezelése |
|||
if isbn then |
|||
pop("van isbn paraméter", isbn) |
|||
--isbn=string.gsub(isbn,"ISBN",'') -- a beleírt ISBN szövegeket kivesszük |
|||
local helyes=true |
|||
local isbn_str, hiba_str='' |
|||
helyes,isbn_str, hiba_str= isISBN(isbn) |
|||
isbn = isbn_str |
|||
hiba_jelzes=hiba_jelzes..hiba_str |
|||
if helyes then pop ("helyesek a paraméterek") end |
|||
end -- ISBN lekezelése |
|||
if milyen_lista then |
if milyen_lista then |
||
mind=false |
mind = false |
||
jo_lista = (milyen_lista == 'jólista') |
|||
else |
else |
||
mind = true |
|||
end |
end |
||
-- output összeállítása |
|||
-- output összeállítása |
|||
local s |
|||
s='' |
|||
if isbn then |
if isbn then |
||
if hiba_jelzes then |
if hiba_jelzes then |
||
if mind then |
if mind then |
||
if hibavan then |
s = isbn |
||
if hibavan then |
|||
s = s ..' ' .. hiba_jelzes |
|||
-- a fölérendelt kategória marad hiba esetén |
-- a fölérendelt kategória marad hiba esetén |
||
if kategorizalas_van then s = s .. ' |
if kategorizalas_van then s = s .. ' [[Kategória:Lapok helytelen ISBN kóddal]]' end |
||
end |
end |
||
else |
else |
||
if jo_lista then |
if jo_lista then |
||
s = isbn |
|||
elseif hibavan then |
|||
s = hiba_jelzes |
|||
-- a fölérendelt kategória marad hiba esetén |
|||
if kategorizalas_van then s = s .. ' [[Kategória:Lapok helytelen ISBN kóddal]]' end |
|||
end |
|||
end |
|||
end |
end |
||
end |
end |
||
end |
end |
||
-- if ou then s = s..ou end --ez csak nyomkövetésnél kell, de akkor nagyon |
|||
-- s = s .. mw.dumpObject(args) |
|||
return s |
return s |
||
end |
|||
local function run(frame) |
|||
args = require('Modul:Arguments').getArgs(frame) |
|||
function run(frame) |
|||
return _checkISBN(args) |
|||
local pframe = frame:getParent() |
|||
args = pframe.args -- azok a paraméterek, amelyek a sablont kisérik a Pepo41/CCitPer --sablon hivása oldalon |
|||
config = frame.args -- az #invoke utasításban átadott paraméterek |
|||
return _checkISBN(frame) |
|||
end |
end |
||
local p = { |
local p = { |
||
run = run, |
|||
run = run, -- az egyetlen átadadndó funkció a táblából |
|||
isISBN = isISBN, |
|||
argumentumok = args |
|||
} |
} |
||
A lap jelenlegi, 2023. november 29., 23:44-kori változata
CheckISBN[mi ez?] • [dokumentáció: mutat, ] • [tesztek: létrehozás]
require('strict')
local args = {}
local ou = ''
local function pop(...) -- idézőjeles rész és bővítmények az ou számára
-- Ha nem kell, ne zabálja a memóriát
do return end
local mi = {...}
for _, v in ipairs(mi) do
ou = ou .. v .. '\n'
mw.log(v)
end
end
local hibavan = false
local kategorizalas_van = false
local function error(kategorizalas_kell, about)
-- Enclose errorMsg with <span>
-- Precondition:
-- about -- string
hibavan = true
if kategorizalas_kell then
kategorizalas_van = true
end
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
local function isISBN10(str)
local v, chsum, chnum, chd, i, j, chnumdo, eloirt_hossz
v = str:gsub('[^%d]', '') -- a decimális jegyeken kívül mindent figyelmen kívül hagyunk
pop('10', v)
chd = str:sub(-1, -1) -- check digit az utólsó
pop(chd)
if chd == 'X' or chd == 'x' or tonumber(chd) ~= nil then
if chd == 'X' or chd == 'x' then
chnum = 10
eloirt_hossz = 9
else
chnum = string.byte(chd, 1) - string.byte('0', 1)
eloirt_hossz = 10
end
else
return false
end
pop(chd, chnum)
if #v ~= eloirt_hossz then -- kötőjelek nélkül 10 karakter hosszúnak kell lennie
return false
end
v = v:sub(1, 9)
pop(v, chd)
pop(chnum)
chsum = 0
for j = 10, 2, -1 do
local elsbyte = string.byte(v, (11 - j))
chsum = chsum + (elsbyte - string.byte('0', 1)) * (11 - j)
end
pop(chsum)
chnumdo = chsum % 11
pop(chnumdo)
if chnumdo == chnum then
return true
else
return false
end
end
local function isISBN13(str)
local v, chsum, chnum, chd, i, j, chnumdo
v = str:gsub('[^%d]', '') -- a decimális jegyeken kívül mindent figyelmen kívül hagyunk
pop('v_1', v)
chd = str:sub(-1, -1) -- check digit az utolsó
pop('chd_2', chd)
if tonumber(chd) ~= nil then
chnum = string.byte(chd, 1) - string.byte('0', 1)
else
return false
end
pop('chd_3, chnum_1', chd, chnum)
if #v ~= 13 then -- kötőjelek nélkül 13 karakter hosszúnak kell lennie
return false
end
v = string.sub(v, 1, 12)
pop(v, chd)
local elsbyte
chsum = 0
for j = 1, 12 do -- z_13 = (10 - Summa (i=1,12) (z_i*(3^((i+1)%2))%10) %10
elsbyte = string.byte(v, j);
--pop(elsbyte)
chsum = chsum + (elsbyte - string.byte('0', 1)) * 3^((j+1)%2)
--pop(3^((j+1)%2))
end
pop(chsum)
chnumdo = (10 - chsum % 10) % 10
pop(chnumdo)
if chnumdo == chnum then
pop("true")
return true
else
pop("true")
return false
end
end
local function isI(str)
local v, eloirt_hossz
v = str:gsub('[^%dXx]', '') -- a decimális jegyeken kívül mindent figyelmen kívül hagyunk
pop(v)
eloirt_hossz = 10
pop('előírt hossza', eloirt_hossz)
if #v == eloirt_hossz then
pop('tízes')
return isISBN10(str)
elseif #v > eloirt_hossz then
pop('tizenhármas')
return isISBN13(str)
else
return false
end
end
local function isISBN(str, link, no_isbn)
if type(str) ~= 'string' then
return error(false, 'Nem string bemenet az isISBN függvénynek')
end
local vizsgalandok = {}
str = str:gsub('[^%d%,Xx -]', '') -- minden ki, ami nem számjegy, vessző, X/x, szóköz vagy kötőjel
--[=[
local elso_szelet, masodik_szelet
elso_szelet = string.sub(str,1,-2)
masodik_szelet = string.sub(str,-1,-1)
pop("elso_szelet, masodik_szelet",elso_szelet,masodik_szelet)
if masodik_szelet == 'X' then
elso_szelet=string.gsub(elso_szelet,'[%a<>%[%]%-%(%)%/%=%"]','') -- (str,'[^%d%,X,x]','')
elso_szelet=string.gsub(elso_szelet,"ó",'')
str = elso_szelet .. masodik_szelet
else
str=string.gsub(str,'[%a<>%[%]%-%(%)%/%=%"]','') -- (str,'[^%d%,X,x]','')
str=string.gsub(str,"ó",'')
end
--]=]
pop('str a ballaszt nélkül', str)
for w in str:gmatch('[^%,]+') do
w = mw.text.trim(w)
pop('w', w .. '\n')
if w ~= '' then
table.insert(vizsgalandok, w)
end
end
local s = {}
local s_nyers = {}
local h = {}
local h_nyers = {}
local helyes = true
local formatstring
if link and no_isbn then
formatstring = '[[Speciális:Könyvforrások/%s|%s]]'
elseif link then
formatstring = '[[Speciális:Könyvforrások/%s|ISBN %s]]'
elseif no_isbn then
formatstring = '%s'
else
formatstring = 'ISBN %s'
end
for _, vi in ipairs(vizsgalandok) do
if isI(vi) then
table.insert(s, string.format(formatstring, vi:gsub('[ -]', ''), vi:gsub(' ', ' ')))
table.insert(s_nyers, vi)
pop('helyes előrehaladása', table.concat(s, ', '))
else
helyes = false
table.insert(h, error(true, 'helytelen ISBN kód') .. ': ' .. vi)
table.insert(h_nyers, vi)
pop('hibás előrehaladása', table.concat(h, ', '))
end
end
s = table.concat(s, ', ')
h = table.concat(h, ', ')
return helyes, s, h, s_nyers, h_nyers
end -- isISBN
local function _checkISBN(args)
local jo_lista, mind
local alkategoriak = {}
local isbn = args[1]
local link = (args.link ~= nil)
local no_isbn = (args['isbn szöveg nélkül'] ~= nil)
local hiba_jelzes = ''
local milyen_lista = args[2]
pop('a kapott argumentum', isbn)
pop('linkelve?', tostring(link))
-- ISBN lekezelése
if isbn then
pop('van isbn paraméter', isbn)
--isbn=string.gsub(isbn,"ISBN",'') -- a beleírt ISBN szövegeket kivesszük
local helyes
helyes, isbn, hiba_jelzes = isISBN(isbn, link, no_isbn)
if helyes then
pop('helyesek a paraméterek')
end
end
if milyen_lista then
mind = false
jo_lista = (milyen_lista == 'jólista')
else
mind = true
end
-- output összeállítása
local s
if isbn then
if hiba_jelzes then
if mind then
s = isbn
if hibavan then
s = s ..' ' .. hiba_jelzes
-- a fölérendelt kategória marad hiba esetén
if kategorizalas_van then s = s .. ' [[Kategória:Lapok helytelen ISBN kóddal]]' end
end
else
if jo_lista then
s = isbn
elseif hibavan then
s = hiba_jelzes
-- a fölérendelt kategória marad hiba esetén
if kategorizalas_van then s = s .. ' [[Kategória:Lapok helytelen ISBN kóddal]]' end
end
end
end
end
-- if ou then s = s..ou end --ez csak nyomkövetésnél kell, de akkor nagyon
-- s = s .. mw.dumpObject(args)
return s
end
local function run(frame)
args = require('Modul:Arguments').getArgs(frame)
return _checkISBN(args)
end
local p = {
run = run,
isISBN = isISBN,
argumentumok = args
}
return p