<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.cern.ch/index.php?action=history&amp;feed=atom&amp;title=Module%3AAuthority_control%2Fauxiliary</id>
	<title>Module:Authority control/auxiliary - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.cern.ch/index.php?action=history&amp;feed=atom&amp;title=Module%3AAuthority_control%2Fauxiliary"/>
	<link rel="alternate" type="text/html" href="https://wiki.cern.ch/index.php?title=Module:Authority_control/auxiliary&amp;action=history"/>
	<updated>2026-04-04T05:49:31Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://wiki.cern.ch/index.php?title=Module:Authority_control/auxiliary&amp;diff=7869&amp;oldid=prev</id>
		<title>Vigen: 1 revision imported from :wikipedia:Module:Authority_control/auxiliary</title>
		<link rel="alternate" type="text/html" href="https://wiki.cern.ch/index.php?title=Module:Authority_control/auxiliary&amp;diff=7869&amp;oldid=prev"/>
		<updated>2026-03-19T08:35:16Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported from &lt;a href=&quot;https://en.wikipedia.org/wiki/Module:Authority_control/auxiliary&quot; class=&quot;extiw&quot; title=&quot;wikipedia:Module:Authority control/auxiliary&quot;&gt;wikipedia:Module:Authority_control/auxiliary&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:35, 19 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Vigen</name></author>
	</entry>
	<entry>
		<id>https://wiki.cern.ch/index.php?title=Module:Authority_control/auxiliary&amp;diff=7868&amp;oldid=prev</id>
		<title>wikipedia&gt;MSGJ: remove unnecessary spans and add some spacing</title>
		<link rel="alternate" type="text/html" href="https://wiki.cern.ch/index.php?title=Module:Authority_control/auxiliary&amp;diff=7868&amp;oldid=prev"/>
		<updated>2024-08-27T06:19:50Z</updated>

		<summary type="html">&lt;p&gt;remove unnecessary spans and add some spacing&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
local p = {}&lt;br /&gt;
--[[======================================================]]&lt;br /&gt;
--[[            Format validation functions               ]]&lt;br /&gt;
--[[======================================================]]&lt;br /&gt;
function p.botanistV(id)&lt;br /&gt;
	return mw.ustring.match(id,&amp;quot;^[%u%l%d%. &amp;#039;-]+$&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- NCDA: NOID Check Digit Algorithm; see [[wikipedia:Check digit#NCDA]]&lt;br /&gt;
local ncda -- leave this as a local since NCDA is commonly used among ARK identifiers and could be useful for validating other identifiers later&lt;br /&gt;
do -- initialize these constants only once but scope them in a block so local namespace doesn&amp;#039;t get cluttered with these&lt;br /&gt;
	local r29s = [[0123456789bcdfghjkmnpqrstvwxz]] -- radix 29 &amp;quot;betanumeric&amp;quot; digit string&lt;br /&gt;
	local r29n = r29s:len()&lt;br /&gt;
	local r29v2d, r29d2v = {}, {}&lt;br /&gt;
	for i = 1, r29n do&lt;br /&gt;
		local v, d = i-1, r29s:sub(i, i)&lt;br /&gt;
		r29v2d[v], r29d2v[d] = d, v&lt;br /&gt;
	end&lt;br /&gt;
	function ncda(sid)&lt;br /&gt;
		local n, sum = sid:len(), 0&lt;br /&gt;
		for i = 1, n do&lt;br /&gt;
			sum = sum + i * (r29d2v[sid:sub(i, i)] or 0)&lt;br /&gt;
		end&lt;br /&gt;
		return r29v2d[sum % r29n]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
function p.validateBNF(id)&lt;br /&gt;
	local FRBNF = id:sub(1, -2)&lt;br /&gt;
	return FRBNF:match(&amp;#039;^%d%d%d%d%d%d%d%d$&amp;#039;) ~= nil and ncda(&amp;#039;cb&amp;#039;..FRBNF) == id:sub(-1) and id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.validateIsni(id) --Validate ISNI (and ORCID) and returns it as a 16 characters string or returns false if it&amp;#039;s invalid. See http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier&lt;br /&gt;
	id = id:gsub( &amp;#039;[ %-]&amp;#039;, &amp;#039;&amp;#039; ):upper()&lt;br /&gt;
	if not id:match( &amp;#039;^%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d[%dX]$&amp;#039; ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	local total = 0&lt;br /&gt;
	for i = 1, 15 do&lt;br /&gt;
		local digit = id:byte( i ) - 48 --Get integer value&lt;br /&gt;
		total = (total + digit) * 2&lt;br /&gt;
	end&lt;br /&gt;
	local remainder = total % 11&lt;br /&gt;
	local result = (12 - remainder) % 11&lt;br /&gt;
	local checkdigit&lt;br /&gt;
	if result == 10 then&lt;br /&gt;
		checkdigit = &amp;#039;X&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		checkdigit=tostring( result )&lt;br /&gt;
	end&lt;br /&gt;
	if checkdigit ~= string.char( id:byte( 16 ) ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.orcidV(id)&lt;br /&gt;
	id = p.validateIsni(id)&lt;br /&gt;
	if not id then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return id:sub( 1, 4 )..&amp;#039;-&amp;#039;..id:sub( 5, 8 )..&amp;#039;-&amp;#039;..id:sub( 9, 12 )..&amp;#039;-&amp;#039;..id:sub( 13, 16 )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.tlsV(id)&lt;br /&gt;
	id = id:gsub(&amp;#039; +&amp;#039;, &amp;#039;_&amp;#039;)&lt;br /&gt;
	local idlen = mw.ustring.len(id)&lt;br /&gt;
	if idlen &amp;lt; 4 or idlen &amp;gt; 90 then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	local regex = &amp;#039;^%u&amp;#039;..string.rep(&amp;quot;[%w_&amp;#039;,%.%-%(%)%*%/–&amp;amp;]&amp;quot;, idlen - 1)..&amp;#039;$&amp;#039;&lt;br /&gt;
	if not mw.ustring.match(id,regex ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[======================================================]]&lt;br /&gt;
--[[                Custom link functions                 ]]&lt;br /&gt;
--[[======================================================]]&lt;br /&gt;
function p.ISILlink(id,label)&lt;br /&gt;
	if not id:match(&amp;#039;^%D%D?%D?%D?%-.+$&amp;#039;) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	for _, prefix in ipairs({&amp;#039;AT&amp;#039;, &amp;#039;AU&amp;#039;, &amp;#039;BE&amp;#039;, &amp;#039;CA&amp;#039;, &amp;#039;CH&amp;#039;, &amp;#039;DE&amp;#039;, &amp;#039;FI&amp;#039;, &amp;#039;FR&amp;#039;, &amp;#039;IT&amp;#039;, &amp;#039;KR&amp;#039;, &amp;#039;NZ&amp;#039;, &amp;#039;US&amp;#039;, &amp;#039;ZDB&amp;#039;}) do&lt;br /&gt;
		if id:match(&amp;#039;^&amp;#039;..prefix..&amp;#039;%-&amp;#039;) then&lt;br /&gt;
			return &amp;#039;[https://w3id.org/isil/&amp;#039;..id..&amp;#039; &amp;#039; .. (label or &amp;#039;ISIL&amp;#039;) .. &amp;#039;]&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;#039;[[International Standard Identifier for Libraries and Related Organizations|ISIL]]: &amp;#039; .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.uscgLink(id)&lt;br /&gt;
	local id2 = id:match( &amp;#039;^[1-7]%-%d%d?%d?%d?%d?$&amp;#039; ) or id:match( &amp;#039;^[1-7]%-%d%d?%d?%d?%d?%.%d*[1-9]$&amp;#039; )&lt;br /&gt;
	if id2 then&lt;br /&gt;
		return &amp;#039;[https://www.navcen.uscg.gov/pdf/lightlists/LightList%20V&amp;#039;..mw.ustring.sub(id2,1,1)..&amp;#039;.pdf &amp;#039;..id2..&amp;#039;]&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.ccg(id)&lt;br /&gt;
	id = id:match(&amp;#039;^[NAIP]?[1-9]%d*$&amp;#039;) or id:match(&amp;#039;^[NAIP]?[1-9]%d*%.%d+$&amp;#039;)&lt;br /&gt;
	if not id then return false end&lt;br /&gt;
	local link = &amp;#039;https://www.notmar.gc.ca/&amp;#039;&lt;br /&gt;
	local prefix = string.sub(id, 1, 1) -- get first character of id&lt;br /&gt;
	local suffix = string.sub(id, 2) -- remove first character of id&lt;br /&gt;
	local interval = require(&amp;#039;Module:Interval&amp;#039;)._main&lt;br /&gt;
	local v&lt;br /&gt;
	if prefix==&amp;#039;N&amp;#039; then&lt;br /&gt;
		local int = interval({1, 7.5, 14.4, 100, 121, 173, 211, 235, 269.99, 326, 396, 450.1, 471.7, 499, n=suffix})&lt;br /&gt;
		if int==&amp;#039;1-2&amp;#039; then v = 1&lt;br /&gt;
		elseif int==&amp;#039;2-3&amp;#039; then v = 75&lt;br /&gt;
		elseif int==&amp;#039;3-4&amp;#039; then v = 144&lt;br /&gt;
		elseif int==&amp;#039;4-5&amp;#039; then v = 100&lt;br /&gt;
		elseif int==&amp;#039;5-6&amp;#039; then v = 121&lt;br /&gt;
		elseif int==&amp;#039;6-7&amp;#039; then v = 173&lt;br /&gt;
		elseif int==&amp;#039;7-8&amp;#039; then v = 211&lt;br /&gt;
		elseif int==&amp;#039;8-9&amp;#039; then v = 235&lt;br /&gt;
		elseif int==&amp;#039;9-10&amp;#039; then v = 26999&lt;br /&gt;
		elseif int==&amp;#039;10-11&amp;#039; then v = 326&lt;br /&gt;
		elseif int==&amp;#039;11-12&amp;#039; then v = 396&lt;br /&gt;
		elseif int==&amp;#039;12-13&amp;#039; then v = 4501&lt;br /&gt;
		elseif int==&amp;#039;13-14&amp;#039; then v = 4717&lt;br /&gt;
		elseif int==&amp;#039;14-15&amp;#039; then v = 499&lt;br /&gt;
		end&lt;br /&gt;
		link = link .. &amp;#039;publications/list-lights/newfoundland/n&amp;#039; .. v .. &amp;#039;-en&amp;#039;&lt;br /&gt;
	elseif prefix==&amp;#039;A&amp;#039; then&lt;br /&gt;
		local int = interval({5, 114.5, 145, 163, 268, 271, 301.5, 327, 686.5, 704.85, 883.2, 942, 1085, 1169.1, 1584.5, 1773, 1823.55, 2190, 2369, 2389, n=suffix})&lt;br /&gt;
		if int==&amp;#039;1-2&amp;#039; then v = 5&lt;br /&gt;
		elseif int==&amp;#039;2-3&amp;#039; then v = 1145&lt;br /&gt;
		elseif int==&amp;#039;3-4&amp;#039; then v = 145&lt;br /&gt;
		elseif int==&amp;#039;4-5&amp;#039; then v = 162&lt;br /&gt;
		elseif int==&amp;#039;5-6&amp;#039; then v = 268&lt;br /&gt;
		elseif int==&amp;#039;6-7&amp;#039; then v = 271&lt;br /&gt;
		elseif int==&amp;#039;7-8&amp;#039; then v = 3015&lt;br /&gt;
		elseif int==&amp;#039;8-9&amp;#039; then v = 327&lt;br /&gt;
		elseif int==&amp;#039;9-10&amp;#039; then v = 6865&lt;br /&gt;
		elseif int==&amp;#039;10-11&amp;#039; then v = 7048&lt;br /&gt;
		elseif int==&amp;#039;11-12&amp;#039; then v = 883&lt;br /&gt;
		elseif int==&amp;#039;12-13&amp;#039; then v = 942&lt;br /&gt;
		elseif int==&amp;#039;13-14&amp;#039; then v = 1085&lt;br /&gt;
		elseif int==&amp;#039;14-15&amp;#039; then v = 11691&lt;br /&gt;
		elseif int==&amp;#039;15-16&amp;#039; then v = 15845&lt;br /&gt;
		elseif int==&amp;#039;16-17&amp;#039; then v = 1773&lt;br /&gt;
		elseif int==&amp;#039;17-18&amp;#039; then v = 182355&lt;br /&gt;
		elseif int==&amp;#039;18-19&amp;#039; then v = 2190&lt;br /&gt;
		elseif int==&amp;#039;19-20&amp;#039; then v = 2369&lt;br /&gt;
		elseif int==&amp;#039;20-21&amp;#039; then v = 2389&lt;br /&gt;
		end&lt;br /&gt;
		link = link .. &amp;#039;publications/list-lights/atl/a&amp;#039; .. v .. &amp;#039;-en&amp;#039;&lt;br /&gt;
	elseif prefix==&amp;#039;I&amp;#039; then&lt;br /&gt;
		local int = interval({0.05, 401.1, 403.4, 551.06, 552, 624, 708, 731.2, 768, 814, 983, 1046, 1059.6, 1082, 1162, 1204.7, 1233.3, 1328, 1330, 1346.2, 1377.8, 1408, 1410, 1420, 1445, 1470, 1520, 1534, 1540.6, 1554, 1557.7, 1558.8, 1563.1, 1625.5, 1671.7, 1716.96, 2545, n=suffix})&lt;br /&gt;
		if int==&amp;#039;1-2&amp;#039; then v = &amp;#039;01&amp;#039;&lt;br /&gt;
		elseif int==&amp;#039;2-3&amp;#039; then v = 4011&lt;br /&gt;
		elseif int==&amp;#039;3-4&amp;#039; then v = 4034&lt;br /&gt;
		elseif int==&amp;#039;4-5&amp;#039; then v = 55106&lt;br /&gt;
		elseif int==&amp;#039;5-6&amp;#039; then v = 552&lt;br /&gt;
		elseif int==&amp;#039;6-7&amp;#039; then v = 624&lt;br /&gt;
		elseif int==&amp;#039;7-8&amp;#039; then v = 708&lt;br /&gt;
		elseif int==&amp;#039;8-9&amp;#039; then v = 7312&lt;br /&gt;
		elseif int==&amp;#039;9-10&amp;#039; then v = 768&lt;br /&gt;
		elseif int==&amp;#039;10-11&amp;#039; then v = 814&lt;br /&gt;
		elseif int==&amp;#039;11-12&amp;#039; then v = 983&lt;br /&gt;
		elseif int==&amp;#039;12-13&amp;#039; then v = 1046&lt;br /&gt;
		elseif int==&amp;#039;13-14&amp;#039; then v = 10596&lt;br /&gt;
		elseif int==&amp;#039;14-15&amp;#039; then v = 1082&lt;br /&gt;
		elseif int==&amp;#039;15-16&amp;#039; then v = 1162&lt;br /&gt;
		elseif int==&amp;#039;16-17&amp;#039; then v = 12047&lt;br /&gt;
		elseif int==&amp;#039;17-18&amp;#039; then v = 12333&lt;br /&gt;
		elseif int==&amp;#039;18-19&amp;#039; then v = 1328&lt;br /&gt;
		elseif int==&amp;#039;19-20&amp;#039; then v = 1330&lt;br /&gt;
		elseif int==&amp;#039;20-21&amp;#039; then v = 13462&lt;br /&gt;
		elseif int==&amp;#039;21-22&amp;#039; then v = 13778&lt;br /&gt;
		elseif int==&amp;#039;22-23&amp;#039; then v = 1408&lt;br /&gt;
		elseif int==&amp;#039;23-24&amp;#039; then v = 1410&lt;br /&gt;
		elseif int==&amp;#039;24-25&amp;#039; then v = 1420&lt;br /&gt;
		elseif int==&amp;#039;25-26&amp;#039; then v = 1445&lt;br /&gt;
		elseif int==&amp;#039;26-27&amp;#039; then v = 1470&lt;br /&gt;
		elseif int==&amp;#039;27-28&amp;#039; then v = 1520&lt;br /&gt;
		elseif int==&amp;#039;28-29&amp;#039; then v = 1534&lt;br /&gt;
		elseif int==&amp;#039;29-30&amp;#039; then v = 15406&lt;br /&gt;
		elseif int==&amp;#039;30-31&amp;#039; then v = 1554&lt;br /&gt;
		elseif int==&amp;#039;31-32&amp;#039; then v = 15577&lt;br /&gt;
		elseif int==&amp;#039;32-33&amp;#039; then v = 15588&lt;br /&gt;
		elseif int==&amp;#039;33-34&amp;#039; then v = 1562&lt;br /&gt;
		elseif int==&amp;#039;34-35&amp;#039; then v = 16255&lt;br /&gt;
		elseif int==&amp;#039;35-36&amp;#039; then v = 16717&lt;br /&gt;
		elseif int==&amp;#039;36-37&amp;#039; then v = 171696&lt;br /&gt;
		elseif int==&amp;#039;37-38&amp;#039; then v = 2545&lt;br /&gt;
		end&lt;br /&gt;
		link = link .. &amp;#039;publications/list-lights/inland-waters/i&amp;#039; .. v .. &amp;#039;-en&amp;#039;&lt;br /&gt;
	elseif prefix==&amp;#039;P&amp;#039; then&lt;br /&gt;
		link = link .. &amp;#039;publications/list-lights/pac/p&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		link = link .. &amp;#039;list-lights&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;#039;[[CCG (identifier)|CCG]]: [&amp;#039; .. link .. &amp;#039; &amp;#039; .. id .. &amp;#039;]&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>wikipedia&gt;MSGJ</name></author>
	</entry>
</feed>