Module:Citation/CS1/Identifiers: Difference between revisions
Content added Content deleted
m (1 revision imported: CITATION NEEDED) |
m (ssrn limit -> 3500000;) |
||
Line 29: | Line 29: | ||
ext_link = mw.ustring.format ('[%s%s%s %s]', options.prefix, url_string, options.suffix or "", mw.text.nowiki(options.id)); |
ext_link = mw.ustring.format ('[%s%s%s %s]', options.prefix, url_string, options.suffix or "", mw.text.nowiki(options.id)); |
||
if is_set(options.access) then |
if is_set(options.access) then |
||
ext_link = substitute (cfg.presentation[ |
ext_link = substitute (cfg.presentation['access-signal'], {ext_link, cfg.presentation[options.access]}); -- add the free-to-read / paywall lock |
||
end |
end |
||
return mw.ustring.format( '[[%s|%s]]%s%s', options.link, options.label, options.separator or " ", ext_link); |
return mw.ustring.format( '[[%s|%s]]%s%s', options.link, options.label, options.separator or " ", ext_link); |
||
-- return mw.ustring.format( '[[%s|%s]]%s[%s%s%s %s]', |
|||
-- options.link, options.label, options.separator or " ", |
|||
-- options.prefix, url_string, options.suffix or "", |
|||
-- mw.text.nowiki(options.id) |
|||
-- ); |
|||
end |
end |
||
Line 335: | Line 329: | ||
return text .. class; |
return text .. class; |
||
end |
end |
||
--[[--------------------------< B I O R X I V >----------------------------------------------------------------- |
--[[--------------------------< B I O R X I V >----------------------------------------------------------------- |
||
Line 340: | Line 335: | ||
Format bioRxiv id and do simple error checking. BiorXiv ids are exactly 6 digits. |
Format bioRxiv id and do simple error checking. BiorXiv ids are exactly 6 digits. |
||
The bioRxiv id is the number following the last slash in the bioRxiv-issued DOI: |
The bioRxiv id is the number following the last slash in the bioRxiv-issued DOI: |
||
https://doi.org/10.1101/078733 -> 078733 |
|||
]] |
]] |
||
Line 356: | Line 351: | ||
encode=handler.encode, access=handler.access}) .. err_cat; |
encode=handler.encode, access=handler.access}) .. err_cat; |
||
end |
end |
||
--[[--------------------------< N O R M A L I Z E _ L C C N >-------------------------------------------------- |
--[[--------------------------< N O R M A L I Z E _ L C C N >-------------------------------------------------- |
||
Line 521: | Line 517: | ||
local function pmc(id, embargo) |
local function pmc(id, embargo) |
||
local test_limit = 6000000; -- update this value as PMCs approach |
local test_limit = 6000000; -- 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 |
||
local id_num; |
|||
⚫ | |||
local text; |
local text; |
||
⚫ | |||
id_num = id:match ('^[Pp][Mm][Cc](%d+)$'); -- identifier with pmc prefix |
|||
if is_set (id_num) then |
|||
⚫ | |||
add_maint_cat ('pmc_format'); |
|||
⚫ | |||
else -- |
else -- plain number without pmc prefix |
||
id_num = id:match ('^%d+$'); -- if here id is all digits |
|||
end |
|||
⚫ | |||
⚫ | |||
if is_set (id_num) then -- id_num has a value so test it |
|||
id_num = tonumber(id_num); -- convert id_num to a number for range testing |
|||
⚫ | |||
⚫ | |||
else |
|||
id = tostring (id_num); -- make sure id is a string |
|||
end |
end |
||
else -- when id format incorrect |
|||
⚫ | |||
end |
end |
||
Line 539: | Line 545: | ||
text="[[" .. handler.link .. "|" .. handler.label .. "]]" .. handler.separator .. id .. err_cat; -- still embargoed so no external link |
text="[[" .. handler.link .. "|" .. handler.label .. "]]" .. handler.separator .. id .. err_cat; -- still embargoed so no external link |
||
else |
else |
||
text = external_link_id({link = handler.link, label = handler.label, |
text = external_link_id({link = handler.link, label = handler.label, -- 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 768: | Line 774: | ||
return text; |
return text; |
||
end |
end |
||
--[[--------------------------< C I T E S E E R X >------------------------------------------------------------ |
--[[--------------------------< C I T E S E E R X >------------------------------------------------------------ |
||
Line 773: | Line 780: | ||
CiteSeerX use their own notion of "doi" (not to be confused with the identifiers resolved via doi.org). |
CiteSeerX use their own notion of "doi" (not to be confused with the identifiers resolved via doi.org). |
||
The description of the structure of this identifier can be found at Help_talk:Citation_Style_1#CiteSeerX_id_structure |
The description of the structure of this identifier can be found at Help_talk:Citation_Style_1/Archive_26#CiteSeerX_id_structure |
||
]] |
]] |
||
Line 790: | Line 797: | ||
return text; |
return text; |
||
end |
end |
||
--[[--------------------------< S S R N >---------------------------------------------------------------------- |
|||
Format an ssrn, do simple error checking |
|||
SSRNs are sequential numbers beginning at 100? and counting up. This code checks the ssrn to see that it is |
|||
only digits and is greater than 99 and less than test_limit; the value in local variable test_limit will need |
|||
to be updated periodically as more SSRNs are issued. |
|||
]] |
|||
local function ssrn (id) |
|||
local test_limit = 3500000; -- update this value as SSRNs approach |
|||
local handler = cfg.id_handlers['SSRN']; |
|||
local err_cat = ''; -- presume that SSRN is valid |
|||
local id_num; |
|||
local text; |
|||
⚫ | |||
if is_set (id_num) then -- id_num has a value so test it |
|||
id_num = tonumber(id_num); -- convert id_num to a number for range testing |
|||
if 100 > id_num or test_limit < id_num then -- if SSRN is outside test limit boundaries |
|||
err_cat = ' ' .. set_error( 'bad_ssrn' ); -- set an error message |
|||
⚫ | |||
else -- when id format incorrect |
|||
err_cat = ' ' .. set_error( 'bad_ssrn' ); -- set an error message |
|||
end |
|||
text = external_link_id({link = handler.link, label = handler.label, |
|||
prefix=handler.prefix,id=id,separator=handler.separator, encode=handler.encode, access=handler.access}) .. err_cat; |
|||
return text; |
|||
end |
|||
--[[--------------------------< B U I L D _ I D _ L I S T >-------------------------------------------------------- |
--[[--------------------------< B U I L D _ I D _ L I S T >-------------------------------------------------------- |
||
Line 841: | Line 884: | ||
elseif k == 'OCLC' then |
elseif k == 'OCLC' then |
||
table.insert( new_list, {handler.label, oclc( v ) } ); |
table.insert( new_list, {handler.label, oclc( v ) } ); |
||
elseif k == 'SSRN' then |
|||
table.insert( new_list, {handler.label, ssrn( v ) } ); |
|||
elseif k == 'ISMN' then |
elseif k == 'ISMN' then |
||
table.insert( new_list, {handler.label, ismn( v ) } ); |
table.insert( new_list, {handler.label, ismn( v ) } ); |
||
Line 851: | Line 896: | ||
local check; |
local check; |
||
local err_type = ''; |
local err_type = ''; |
||
-- if not check_isbn( v ) and not is_set(options.IgnoreISBN) then |
|||
-- ISBN = ISBN .. set_error( 'bad_isbn', {}, false, " ", "" ); |
|||
⚫ | |||
check, err_type = check_isbn( v ); |
check, err_type = check_isbn( v ); |
||
if not check then |
if not check then |
||
Line 901: | Line 943: | ||
return id_list; |
return id_list; |
||
end |
end |
||
--[[--------------------------< E X T R A C T _ I D _ A C C E S S _ L E V E L S >-------------------------------------- |
--[[--------------------------< E X T R A C T _ I D _ A C C E S S _ L E V E L S >-------------------------------------- |
||
Line 954: | Line 997: | ||
z = utilities_page_ptr.z; -- table of tables in Module:Citation/CS1/Utilities |
z = utilities_page_ptr.z; -- table of tables in Module:Citation/CS1/Utilities |
||
end |
end |
||