Module:Citation/CS1/Identifiers: Difference between revisions
synch from sandbox;
| m>Trappist the monk  (Synch from sandbox;) | m>Trappist the monk   (synch from sandbox;) | ||
| 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[options.access] | 		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); | ||
| 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;	 | 	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 =  '';	 | 	local err_cat =  '';														-- presume that PMC is valid | ||
| 	local id_num; | |||
| 	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																        -- plain number without pmc prefix | |||
| 		id_num = id:match ('^%d+$');											-- if here id is all digits | |||
| 	end | |||
| 	if  | 	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 1 > id_num or test_limit < id_num then								-- if PMC is outside test limit boundaries | |||
| 			err_cat = ' ' .. set_error( 'bad_pmc' );							-- set an error message | |||
| 		if 1 > id_num or test_limit < id_num then	 | 		else | ||
| 			err_cat = ' ' .. set_error( 'bad_pmc' );	 | 			id = tostring (id_num);												-- make sure id is a string | ||
| 		end | 		end | ||
| 	else																		-- when id format incorrect | |||
| 		err_cat = ' ' .. set_error( 'bad_pmc' );								-- set an error message | |||
| 	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 = 3000000;													-- 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; | |||
| 	id_num = id:match ('^%d+$');												-- id must be all digits | |||
| 	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 | |||
| 		end | |||
| 	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 = ''; | ||
| 			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 | ||