445
edits
(biorxiv cat fix?) |
(trying to fix error with {{cite}} templates) |
||
Line 1: | Line 1: | ||
local identifiers = {}; | |||
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- | --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- | ||
Line 8: | Line 11: | ||
local cfg; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration | local cfg; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration | ||
local wd_int_lang = (mw.site.server:match ('wikidata') and mw.getCurrentFrame():preprocess('{{int:lang}}')) or ''; | |||
--============================<< H E L P E R F U N C T I O N S >>============================================ | --============================<< H E L P E R F U N C T I O N S >>============================================ | ||
--[[--------------------------< E X T E R N A L _ L I N K _ I D >---------------------------------------------- | --[[--------------------------< E X T E R N A L _ L I N K _ I D >---------------------------------------------- | ||
Line 53: | Line 26: | ||
local url_string = options.id; | local url_string = options.id; | ||
local ext_link; | local ext_link; | ||
local | local this_wiki_code; -- wikipedia subdomain; 'en' for en.wikipedia.org | ||
if options.encode == true or options.encode == nil then | if options.encode == true or options.encode == nil then | ||
Line 65: | Line 37: | ||
end | end | ||
this_wiki_code = mw.language.getContentLanguage():getCode(); -- get this wikipedia's language code (subdomain) | |||
if string.match (mw.site.server, 'wikidata') then | |||
this_wiki_code = mw.getCurrentFrame():preprocess('{{int:lang}}'); -- on wikidata so use interface language setting instead | |||
end | end | ||
return table.concat ({ | return table.concat ({ | ||
make_wikilink ( | make_wikilink (options.link, options.label), -- wikidata link or locally specified | ||
options.separator or ' ', | options.separator or ' ', | ||
ext_link | ext_link | ||
Line 86: | Line 58: | ||
local function internal_link_id(options) | local function internal_link_id(options) | ||
return table.concat ( | return table.concat ( | ||
{ | { | ||
make_wikilink ( | make_wikilink (options.link, options.label), | ||
options.separator or ' ', | options.separator or ' ', | ||
make_wikilink ( | make_wikilink ( | ||
table.concat ( | table.concat ( | ||
{ | { | ||
options.prefix, | options.prefix, | ||
id, | options.id, | ||
options.suffix or '' | options.suffix or '' | ||
}), | }), | ||
mw.text.nowiki (options.id) | |||
); | ); | ||
}); | }); | ||
end | end | ||
Line 136: | Line 101: | ||
end | end | ||
return ''; -- |embargo= not set return empty string | return ''; -- |embargo= not set return empty string | ||
end | end | ||
Line 190: | Line 116: | ||
local function is_valid_isxn (isxn_str, len) | local function is_valid_isxn (isxn_str, len) | ||
local temp = 0; | local temp = 0; | ||
isxn_str = { isxn_str:byte(1, len) }; | isxn_str = { isxn_str:byte(1, len) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39, 'X' → 0x58 | ||
len = len+1; | len = len+1; -- adjust to be a loop counter | ||
for i, v in ipairs( isxn_str ) do | for i, v in ipairs( isxn_str ) do -- loop through all of the bytes and calculate the checksum | ||
if v == string.byte( "X" ) then | if v == string.byte( "X" ) then -- if checkdigit is X (compares the byte value of 'X' which is 0x58) | ||
temp = temp + 10*( len - i ); | temp = temp + 10*( len - i ); -- it represents 10 decimal | ||
else | else | ||
temp = temp + tonumber( string.char(v) )*(len-i); | temp = temp + tonumber( string.char(v) )*(len-i); | ||
end | end | ||
end | end | ||
return temp % 11 == 0; | return temp % 11 == 0; -- returns true if calculation result is zero | ||
end | end | ||
Line 324: | Line 250: | ||
err_cat = err_cat and table.concat ({' ', set_error ('bad_arxiv')}) or ''; -- set error message if flag is true | err_cat = err_cat and table.concat ({' ', set_error ('bad_arxiv')}) or ''; -- set error message if flag is true | ||
text = external_link_id ({link=handler.link, label=handler.label, q=handler.q | text = external_link_id({link = handler.link, label = handler.label, q = handler.q, | ||
prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode, access=handler.access}) .. err_cat; | prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode, access=handler.access}) .. err_cat; | ||
Line 351: | Line 277: | ||
1–4 must be digits and must represent a year in the range of 1000 – next year | 1–4 must be digits and must represent a year in the range of 1000 – next year | ||
5 must be a letter | 5 must be a letter | ||
6 must be letter, ampersand, or dot (ampersand cannot directly precede a dot; &. ) | |||
7–8 must be letter, digit, ampersand, or dot (ampersand cannot directly precede a dot; &. ) | |||
9–18 must be letter, digit, or dot | 9–18 must be letter, digit, or dot | ||
19 must be a letter or dot | 19 must be a letter or dot | ||
Line 362: | Line 289: | ||
local year; | local year; | ||
local text = external_link_id ({link=handler.link, label=handler.label, q=handler.q | local text = external_link_id({link=handler.link, label=handler.label, q = handler.q, | ||
prefix=handler.prefix, id=id, separator=handler.separator, encode=handler.encode, | prefix=handler.prefix, id=id, separator=handler.separator, encode=handler.encode, | ||
access=access}); | access=access}); | ||
if 19 ~= id:len() then | if 19 ~= id:len() then | ||
err_type = | err_type = 'length'; | ||
else | else | ||
year = id:match ("^(%d%d%d%d)[%a][% | year = id:match ("^(%d%d%d%d)[%a][%a&%.][%a&%.%d][%a&%.%d][%a%d%.]+[%a%.]$") -- | ||
if not year then -- if nil then no pattern match | if not year then -- if nil then no pattern match | ||
err_type = | err_type = 'value'; -- so value error | ||
else | else | ||
local next_year = tonumber(os.date ('%Y'))+1; -- get the current year as a number and add one for next year | local next_year = tonumber(os.date ('%Y'))+1; -- get the current year as a number and add one for next year | ||
year = tonumber (year); -- convert year portion of bibcode to a number | year = tonumber (year); -- convert year portion of bibcode to a number | ||
if (1000 > year) or (year > next_year) then | if (1000 > year) or (year > next_year) then | ||
err_type = | err_type = 'year'; -- year out of bounds | ||
end | end | ||
if id:find('&%.') then | if id:find('&%.') then | ||
err_type = | err_type = 'journal'; -- journal abbreviation must not have '&.' (if it does its missing a letter) | ||
end | end | ||
end | end | ||
Line 393: | Line 320: | ||
--[[--------------------------< B I O R X I V >----------------------------------------------------------------- | --[[--------------------------< B I O R X I V >----------------------------------------------------------------- | ||
Format bioRxiv id and do simple error checking. | Format bioRxiv id and do simple error checking. BiorXiv ids are exactly 6 digits. | ||
6 digits | The bioRxiv id is the number following the last slash in the bioRxiv-issued DOI: | ||
https://doi.org/10.1101/078733 -> 078733 | |||
The bioRxiv id is the | |||
]] | ]] | ||
Line 408: | Line 328: | ||
local function biorxiv(id) | local function biorxiv(id) | ||
local handler = cfg.id_handlers['BIORXIV']; | local handler = cfg.id_handlers['BIORXIV']; | ||
local err_cat = | local err_cat = ''; -- presume that bioRxiv id is valid | ||
if nil == id:match("^%d%d%d%d%d%d$") then -- if bioRxiv id has anything but six digits | |||
err_cat = ' ' .. set_error( 'bad_biorxiv'); -- set an error message | |||
' | end | ||
return external_link_id({link = handler.link, label = handler.label, q = handler.q, | |||
return external_link_id ({link=handler.link, label=handler.label, q=handler.q | |||
prefix=handler.prefix,id=id,separator=handler.separator, | prefix=handler.prefix,id=id,separator=handler.separator, | ||
encode=handler.encode, access=handler.access}) .. | encode=handler.encode, access=handler.access}) .. err_cat; | ||
end | end | ||
Line 447: | Line 351: | ||
local matched; | local matched; | ||
local text = external_link_id ({link=handler.link, label=handler.label, q=handler.q | local text = external_link_id({link=handler.link, label=handler.label, q = handler.q, | ||
prefix=handler.prefix, id=id, separator=handler.separator, encode=handler.encode, | prefix=handler.prefix, id=id, separator=handler.separator, encode=handler.encode, | ||
access=handler.access}); | access=handler.access}); | ||
Line 483: | Line 387: | ||
if is_set(inactive) then | if is_set(inactive) then | ||
local inactive_year = inactive:match("%d%d%d%d") or ''; -- try to get the year portion from the inactive date | local inactive_year = inactive:match("%d%d%d%d") or ''; -- try to get the year portion from the inactive date | ||
if is_set(inactive_year) then | |||
table.insert( z.error_categories, "Pages with DOIs inactive since " .. inactive_year ); | |||
table.insert( z.error_categories, | |||
else | else | ||
table.insert( z.error_categories, | table.insert( z.error_categories, "Pages with inactive DOIs" ); -- when inactive doesn't contain a recognizable year | ||
end | end | ||
inactive = " (" .. cfg.messages['inactive'] .. | inactive = " (" .. cfg.messages['inactive'] .. " " .. inactive .. ")" | ||
end | end | ||
text = external_link_id({link = handler.link, label = handler.label, q = handler.q, | |||
text = external_link_id ({link=handler.link, label=handler.label, q=handler.q | |||
prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode, access=access}) .. (inactive or '') | prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode, access=access}) .. (inactive or '') | ||
if nil == id:match("^10%.[^%s–]-/[^%s–]-[^%.,]$") then -- doi must begin with '10.', must contain a fwd slash, must not contain spaces or endashes, and must not end with period or comma | |||
cat = ' ' .. set_error( 'bad_doi' ); | |||
cat = ' ' .. set_error ('bad_doi'); | |||
end | end | ||
Line 552: | Line 419: | ||
terminal punctuation may not be technically correct but it appears, that in practice these characters are rarely | terminal punctuation may not be technically correct but it appears, that in practice these characters are rarely | ||
if ever used in HDLs. | if ever used in HDLs. | ||
]] | ]] | ||
Line 561: | Line 424: | ||
local function hdl(id, access) | local function hdl(id, access) | ||
local handler = cfg.id_handlers['HDL']; | local handler = cfg.id_handlers['HDL']; | ||
local text = external_link_id({link = handler.link, label = handler.label, q = handler.q, | |||
prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode, access=access}) | |||
local text = external_link_id ({link=handler.link, label=handler.label, q=handler.q | |||
prefix=handler.prefix, id=id | |||
if nil == id:match("^[^%s–]-/[^%s–]-[^%.,]$") then -- hdl must contain a fwd slash, must not contain spaces, endashes, and must not end with period or comma | if nil == id:match("^[^%s–]-/[^%s–]-[^%.,]$") then -- hdl must contain a fwd slash, must not contain spaces, endashes, and must not end with period or comma | ||
Line 609: | Line 443: | ||
local function isbn( isbn_str ) | local function isbn( isbn_str ) | ||
if nil ~= isbn_str:match("[^%s-0-9X]") then | if nil ~= isbn_str:match("[^%s-0-9X]") then | ||
return false, | return false, 'invalid character'; -- fail if isbn_str contains anything but digits, hyphens, or the uppercase X | ||
end | end | ||
isbn_str = isbn_str:gsub( "-", "" ):gsub( " ", "" ); -- remove hyphens and spaces | isbn_str = isbn_str:gsub( "-", "" ):gsub( " ", "" ); -- remove hyphens and spaces | ||
Line 615: | Line 449: | ||
if len ~= 10 and len ~= 13 then | if len ~= 10 and len ~= 13 then | ||
return false, | return false, 'length'; -- fail if incorrect length | ||
end | end | ||
if len == 10 then | if len == 10 then | ||
if isbn_str:match( "^%d*X?$" ) == nil then -- fail if isbn_str has 'X' anywhere but last position | if isbn_str:match( "^%d*X?$" ) == nil then -- fail if isbn_str has 'X' anywhere but last position | ||
return false, | return false, 'invalid form'; | ||
end | end | ||
return is_valid_isxn(isbn_str, 10), | return is_valid_isxn(isbn_str, 10), 'checksum'; | ||
else | else | ||
if isbn_str:match( "^%d+$" ) == nil then | if isbn_str:match( "^%d+$" ) == nil then | ||
return false, | return false, 'invalid character'; -- fail if isbn13 is not all digits | ||
end | end | ||
if isbn_str:match( "^97[89]%d*$" ) == nil then | if isbn_str:match( "^97[89]%d*$" ) == nil then | ||
return false, | return false, 'invalid prefix'; -- fail when isbn13 does not begin with 978 or 979 | ||
end | end | ||
return is_valid_isxn_13 (isbn_str), | return is_valid_isxn_13 (isbn_str), 'checksum'; | ||
end | end | ||
end | end | ||
Line 673: | Line 504: | ||
end | end | ||
local handler = cfg.id_handlers['ASIN']; | local handler = cfg.id_handlers['ASIN']; | ||
return external_link_id ({link=handler.link, label=handler.label, q=handler.q, | return external_link_id({link=handler.link, | ||
label=handler.label, q = handler.q, prefix=handler.prefix .. domain .. "/dp/", | |||
id=id, encode=handler.encode, separator = handler.separator}) .. err_cat; | id=id, encode=handler.encode, separator = handler.separator}) .. err_cat; | ||
end | end | ||
Line 702: | Line 533: | ||
end | end | ||
-- text = internal_link_id ({link=handler.link, label=handler.label | -- text = internal_link_id({link = handler.link, label = handler.label, -- use this (or external version) when there is some place to link to | ||
-- prefix=handler.prefix, id= | -- prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode}) | ||
text = table.concat ( | text = table.concat ( | ||
Line 761: | Line 592: | ||
end | end | ||
text = external_link_id ({link=handler.link, label=handler.label, q=handler.q | text = external_link_id({link = handler.link, label = handler.label, q = handler.q, | ||
prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode}) | prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode}) | ||
if false == valid_issn then | if false == valid_issn then | ||
text = text .. ' ' .. set_error( 'bad_issn', e and 'e' or '' ) -- add an error message if the issn is invalid | text = text .. ' ' .. set_error( 'bad_issn', e and 'e' or '' ) -- add an error message if the issn is invalid | ||
Line 797: | Line 628: | ||
end | end | ||
return external_link_id ({link=handler.link, label=handler.label, q=handler.q | return external_link_id({link = handler.link, label = handler.label, q = handler.q, | ||
prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode}) .. err_cat; | prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode}) .. err_cat; | ||
end | end | ||
Line 854: | Line 685: | ||
end | end | ||
return external_link_id ({link=handler.link, label=handler.label, q=handler.q | return external_link_id({link = handler.link, label = handler.label, q = handler.q, | ||
prefix=handler.prefix,id=lccn,separator=handler.separator, encode=handler.encode}) .. err_cat; | prefix=handler.prefix,id=lccn,separator=handler.separator, encode=handler.encode}) .. err_cat; | ||
end | end | ||
Line 886: | Line 717: | ||
end | end | ||
return external_link_id ({link=handler.link, label=handler.label, q=handler.q | return external_link_id({link = handler.link, label = handler.label, q = handler.q, | ||
prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode}) .. err_cat; | prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode}) .. err_cat; | ||
end | end | ||
Line 893: | Line 724: | ||
--[[--------------------------< O C L C >---------------------------------------------------------------------- | --[[--------------------------< O C L C >---------------------------------------------------------------------- | ||
Validate and format an oclc id. | Validate and format an oclc id. https://www.oclc.org/batchload/controlnumber.en.html | ||
]] | ]] | ||
Line 927: | Line 757: | ||
end | end | ||
local text = external_link_id ({link=handler.link, label=handler.label, q=handler.q | local text = external_link_id({link=handler.link, label=handler.label, q = handler.q, | ||
prefix=handler.prefix, id=id, separator=handler.separator, encode=handler.encode}) .. err_msg; | prefix=handler.prefix, id=id, separator=handler.separator, encode=handler.encode}) .. err_msg; | ||
Line 948: | Line 778: | ||
if not is_set (ident) then -- if malformed return an error | if not is_set (ident) then -- if malformed return an error | ||
return external_link_id ({link=handler.link, label=handler.label, q=handler.q | return external_link_id({link=handler.link, label=handler.label, q = handler.q, | ||
prefix=handler.prefix .. 'OL', | prefix=handler.prefix .. 'OL', | ||
id=id, separator=handler.separator, encode = handler.encode, | id=id, separator=handler.separator, encode = handler.encode, | ||
Line 957: | Line 787: | ||
if ( code == "A" ) then | if ( code == "A" ) then | ||
return external_link_id ({link=handler.link, label=handler.label, q=handler.q | return external_link_id({link=handler.link, label=handler.label, q = handler.q, | ||
prefix=handler.prefix .. 'authors/OL', | prefix=handler.prefix .. 'authors/OL', | ||
id=id, separator=handler.separator, encode = handler.encode, | id=id, separator=handler.separator, encode = handler.encode, | ||
Line 964: | Line 794: | ||
if ( code == "M" ) then | if ( code == "M" ) then | ||
return external_link_id ({link=handler.link, label=handler.label, q=handler.q | return external_link_id({link=handler.link, label=handler.label, q = handler.q, | ||
prefix=handler.prefix .. 'books/OL', | prefix=handler.prefix .. 'books/OL', | ||
id=id, separator=handler.separator, encode = handler.encode, | id=id, separator=handler.separator, encode = handler.encode, | ||
Line 971: | Line 801: | ||
if ( code == "W" ) then | if ( code == "W" ) then | ||
return external_link_id ({link=handler.link, label=handler.label, q=handler.q | return external_link_id({link=handler.link, label=handler.label, q = handler.q, | ||
prefix=handler.prefix .. 'works/OL', | prefix=handler.prefix .. 'works/OL', | ||
id=id, separator=handler.separator, encode = handler.encode, | id=id, separator=handler.separator, encode = handler.encode, | ||
Line 997: | Line 827: | ||
local function pmc(id, embargo) | local function pmc(id, embargo) | ||
local test_limit = | local test_limit = 6500000; -- update this value as PMCs approach | ||
local handler = cfg.id_handlers['PMC']; | local handler = cfg.id_handlers['PMC']; | ||
local err_cat = ''; -- presume that PMC is valid | local err_cat = ''; -- presume that PMC is valid | ||
Line 1,031: | Line 861: | ||
}); | }); | ||
else | else | ||
text = external_link_id ({link=handler.link, label=handler.label, q=handler.q | text = external_link_id({link = handler.link, label = handler.label, q = handler.q, -- no embargo date or embargo has expired, ok to link to article | ||
prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode, access=handler.access}) .. err_cat; | prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode, access=handler.access}) .. err_cat; | ||
end | end | ||
Line 1,047: | Line 877: | ||
local function pmid(id) | local function pmid(id) | ||
local test_limit = | local test_limit = 32000000; -- update this value as PMIDs approach | ||
local handler = cfg.id_handlers['PMID']; | local handler = cfg.id_handlers['PMID']; | ||
local err_cat = ''; -- presume that PMID is valid | local err_cat = ''; -- presume that PMID is valid | ||
Line 1,060: | Line 890: | ||
end | end | ||
return external_link_id ({link=handler.link, label=handler.label, q=handler.q | return external_link_id({link = handler.link, label = handler.label, q = handler.q, | ||
prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode}) .. err_cat; | prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode}) .. err_cat; | ||
end | end | ||
Line 1,140: | Line 906: | ||
local function ssrn (id) | local function ssrn (id) | ||
local test_limit = | local test_limit = 3500000; -- update this value as SSRNs approach | ||
local handler = cfg.id_handlers['SSRN']; | local handler = cfg.id_handlers['SSRN']; | ||
local err_cat = ''; -- presume that SSRN is valid | local err_cat = ''; -- presume that SSRN is valid | ||
Line 1,157: | Line 923: | ||
end | end | ||
text = external_link_id ({link=handler.link, label=handler.label, q=handler.q | text = external_link_id({link = handler.link, label = handler.label, q = handler.q, | ||
prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode, access=handler.access}) .. err_cat; | prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode, access=handler.access}) .. err_cat; | ||
Line 1,174: | Line 940: | ||
local handler = cfg.id_handlers['USENETID']; | local handler = cfg.id_handlers['USENETID']; | ||
local text = external_link_id ({link=handler.link, label=handler.label, q=handler.q | local text = external_link_id({link = handler.link, label = handler.label, q = handler.q, | ||
prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode}) | prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode}) | ||
Line 1,188: | Line 954: | ||
A numerical identifier in the form nnnn.nnnnn - leading zeros in the first quartet optional | A numerical identifier in the form nnnn.nnnnn - leading zeros in the first quartet optional | ||
]] | ]] | ||
Line 1,197: | Line 959: | ||
local function zbl (id) | local function zbl (id) | ||
local handler = cfg.id_handlers['ZBL']; | local handler = cfg.id_handlers['ZBL']; | ||
local id_num; | |||
local err_cat = ''; | local err_cat = ''; | ||
id_num = id:match ('^[Zz][Bb][Ll](.*)$'); -- identifier with zbl prefix; extract identifier | |||
add_maint_cat (' | |||
if is_set (id_num) then | |||
err_cat = ' ' .. set_error( 'bad_zbl' ); -- | add_maint_cat ('zbl_format'); | ||
else -- plain number without zbl prefix | |||
id_num = id; -- if here id does not have prefix | |||
end | |||
if id_num:match('^%d?%d?%d?%d%.%d%d%d%d%d$') then | |||
id = id_num; -- id matches pattern | |||
else | |||
err_cat = ' ' .. set_error( 'bad_zbl' ); -- set an error message | |||
end | end | ||
return external_link_id ({link=handler.link, label=handler.label, q=handler.q | return external_link_id({link = handler.link, label = handler.label, q = handler.q, | ||
prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode}) .. err_cat; | prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode}) .. err_cat; | ||
end | end | ||
Line 1,286: | Line 1,057: | ||
elseif k == 'PMID' then | elseif k == 'PMID' then | ||
table.insert( new_list, {handler.label, pmid( v ) } ); | table.insert( new_list, {handler.label, pmid( v ) } ); | ||
elseif k == 'SSRN' then | elseif k == 'SSRN' then | ||
table.insert( new_list, {handler.label, ssrn( v ) } ); | table.insert( new_list, {handler.label, ssrn( v ) } ); | ||
Line 1,344: | Line 1,104: | ||
Parameters which have a predefined access level (e.g. arxiv) do not use this | Parameters which have a predefined access level (e.g. arxiv) do not use this | ||
function as they are directly rendered as free without using an additional parameter. | function as they are directly rendered as free without using an additional parameter. | ||
]] | ]] | ||
Line 1,352: | Line 1,110: | ||
local id_accesses_list = {}; | local id_accesses_list = {}; | ||
for k, v in pairs( cfg.id_handlers ) do | for k, v in pairs( cfg.id_handlers ) do | ||
local access_param = v.custom_access; | local access_param = v.custom_access; | ||
local k_lower = string.lower(k); | |||
if is_set(access_param) then | if is_set(access_param) then | ||
local access_level = args[access_param]; | local access_level = args[access_param]; | ||
if is_set (access_level) then | if is_set(access_level) then | ||
if not in_array (access_level, cfg. | if not in_array (access_level:lower(), cfg.keywords['id-access']) then | ||
table.insert( z.message_tail, { set_error( 'invalid_param_val', {access_param, access_level}, true ) } ); | table.insert( z.message_tail, { set_error( 'invalid_param_val', {access_param, access_level}, true ) } ); | ||
access_level = nil; | access_level = nil; | ||
end | end | ||
if not is_set(id_list[k]) then | if not is_set(id_list[k]) then | ||
table.insert( z.message_tail, { set_error( 'param_access_requires_param', { | table.insert( z.message_tail, { set_error( 'param_access_requires_param', {k_lower}, true ) } ); | ||
end | end | ||
id_accesses_list[k] = | if is_set(access_level) then | ||
access_level = access_level:lower(); | |||
end | |||
id_accesses_list[k] = access_level; | |||
end | end | ||
end | end | ||
Line 1,391: | Line 1,153: | ||
end | end | ||
return { | return { |