Module:Citation/CS1/Identifiers: Difference between revisions

Content deleted Content added
sync from sandbox;
No edit summary
 
(3 intermediate revisions by the same user not shown)
Line 291:
return lccn;
end
 
 
Line 555:
local err_flag;
 
local function is_extended_free (registrant, idsuffix) -- local function to check those few registrants that are mixed; identifiable by the doi suffix <incipit>
if cfg.extended_registrants_t[registrant] then -- if this registrant has known free-to-read extentions
for _, incipit in ipairs (cfg.extended_registrants_t[registrant]) do -- loop through the registrant's incipits
if stringmw.ustring.find (idsuffix, incipit,'^' 1,.. trueincipit) then -- if found
return true;
end
Line 590:
end
 
local suffix;
local registrant, suffix = mw.ustring.match (id, '^10%.([^/]+)/([^%s–]-[^%.,])$'); -- registrant and suffix set when DOI has the proper basic form
 
local registrant_err_patterns = { -- these patterns are for code ranges that are not supported
'^[^1-3]%d%d%d%d%.%d+$', -- 5 digits with subcode (0xxxx, 40000+); accepts: 10000–39999
'^[^1-67]%d%d%d%d$', -- 5 digits without subcode (0xxxx, 60000+); accepts: 10000–69999
'^[^1-9]%d%d%d%.%d+$', -- 4 digits with subcode (0xxx); accepts: 1000–9999
'^[^1-9]%d%d%d$', -- 4 digits without subcode (0xxx); accepts: 1000–9999
Line 622 ⟶ 623:
options.coins_list_t['DOI'] = nil; -- when error, unset so not included in COinS
else
if not access and (cfg.known_free_doi_registrants_t[registrant] or is_extended_free (registrant, idsuffix)) then -- |doi-access=free not set and <registrant> is known to be free
set_message ('maint_doi_unflagged_free'); -- set a maint cat
end
Line 709 ⟶ 710:
]]
 
local function isbn (optionsoptions_t)
local isbn_str = optionsoptions_t.id;
local ignore_invalid = optionsoptions_t.accept;
local handler = optionsoptions_t.handler;
local year = options_t.Year; -- when set, valid anchor_year; may have a disambiguator which must be removed
 
local function return_result (check, err_type) -- local function to handle the various returns
Line 721 ⟶ 723:
else -- here when not ignoring
if not check then -- and there is an error
optionsoptions_t.coins_list_t['ISBN'] = nil; -- when error, unset so not included in COinS
set_message ('err_bad_isbn', err_type); -- set an error message
return ISBN; -- return id text
Line 727 ⟶ 729:
end
return ISBN; -- return id text
end
 
if year and not ignore_invalid then --
year = year:match ('%d%d%d%d?'); -- strip disambiguator if present
if year and (1965 > tonumber(year)) then
set_message ('err_invalid_isbn_date'); -- set an error message
return internal_link_id ({link = handler.link, label = handler.label, redirect = handler.redirect,
prefix = handler.prefix, id = isbn_str, separator = handler.separator});
end
end