<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2Ftrappist_the_monk%2Fmake_cite_iucn</id>
	<title>Module:Sandbox/trappist the monk/make cite iucn - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2Ftrappist_the_monk%2Fmake_cite_iucn"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/trappist_the_monk/make_cite_iucn&amp;action=history"/>
	<updated>2026-04-22T00:30:20Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Sandbox/trappist_the_monk/make_cite_iucn&amp;diff=146617&amp;oldid=prev</id>
		<title>imported&gt;Legoktm: Replace Module:No globals with require( &quot;strict&quot; )</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/trappist_the_monk/make_cite_iucn&amp;diff=146617&amp;oldid=prev"/>
		<updated>2022-10-23T21:08:50Z</updated>

		<summary type="html">&lt;p&gt;Replace &lt;a href=&quot;/research/Module:No_globals&quot; title=&quot;Module:No globals&quot;&gt;Module:No globals&lt;/a&gt; with require( &amp;quot;strict&amp;quot; )&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;
&lt;br /&gt;
--[[--------------------------&amp;lt; A U T H O R _ L I S T _ M A K E &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
creates a list of individual |authorn= parameters from the list of names provided in the raw iucn citation.  names&lt;br /&gt;
must have the form: Surname, I. (more than one &amp;#039;I.&amp;#039; pair allowed but no spaces between I. pairs)&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function author_names_get (raw_iucn_cite)&lt;br /&gt;
	local list = {};															-- table that holds name list parts&lt;br /&gt;
	local author_names = raw_iucn_cite:match (&amp;#039;^([^%d]-)%s+%d%d%d%d&amp;#039;);			-- extract author name-list from raw iucn citation&lt;br /&gt;
&lt;br /&gt;
	local names = author_names:gsub (&amp;#039;%.,?%s+&amp;amp;%s+&amp;#039;, &amp;#039;.|&amp;#039;):gsub (&amp;#039;%.,%s+&amp;#039;, &amp;#039;.|&amp;#039;);	-- replace &amp;#039;separators&amp;#039; (&amp;lt;dot&amp;gt;&amp;lt;comma&amp;gt;&amp;lt;space&amp;gt; and &amp;lt;dot&amp;gt;&amp;lt;opt. comma&amp;gt;&amp;lt;space&amp;gt;&amp;lt;ampersand&amp;gt;&amp;lt;space&amp;gt;) with &amp;lt;dot&amp;gt;&amp;lt;pipe&amp;gt;&lt;br /&gt;
	list = mw.text.split (names, &amp;#039;|&amp;#039;);											-- split the string on the pipes into entries in list{}&lt;br /&gt;
	&lt;br /&gt;
	if 0 == #list then&lt;br /&gt;
		return table.concat ({&amp;#039;|author=&amp;#039;, author_names})						-- no &amp;#039;names&amp;#039; of the proper form; return the original as a single |author= parameter&lt;br /&gt;
	else&lt;br /&gt;
		for i, name in ipairs (list) do											-- spin through the list and &lt;br /&gt;
			list[i] = table.concat ({&amp;#039;|author&amp;#039;, i, &amp;#039;=&amp;#039;, name});					-- add |authorn= parameter names&lt;br /&gt;
		end&lt;br /&gt;
		return table.concat (list, &amp;#039; &amp;#039;);										-- make a big string and return that&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T I T L E _ G E T &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
extract and format citation title; attempts to get the italic right&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;binomen&amp;#039;&amp;#039; (amended or errata title)&lt;br /&gt;
&amp;#039;&amp;#039;binomen&amp;#039;&amp;#039;&lt;br /&gt;
&amp;#039;&amp;#039;binomen&amp;#039;&amp;#039; ssp. &amp;#039;&amp;#039;subspecies&amp;#039;&amp;#039;&lt;br /&gt;
&amp;#039;&amp;#039;binomen&amp;#039;&amp;#039; subsp. &amp;#039;&amp;#039;subspecies&amp;#039;&amp;#039;&lt;br /&gt;
&amp;#039;&amp;#039;binomen&amp;#039;&amp;#039; var. &amp;#039;&amp;#039;variety&amp;#039;&amp;#039;&lt;br /&gt;
&amp;#039;&amp;#039;binomen&amp;#039;&amp;#039; subvar. &amp;#039;&amp;#039;subvariety&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
all of the above may have trailing amended or errata text in parentheses&lt;br /&gt;
&lt;br /&gt;
TODO: are there others?&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function title_get (raw_iucn_cite)&lt;br /&gt;
	local title = raw_iucn_cite:match (&amp;#039;%d%d%d%d%.%s+(.-)%s*%. The IUCN Red List of Threatened Species&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	local patterns = {															-- tables of string.match patterns [1] and string.gsub patterns [2]&lt;br /&gt;
		{&amp;#039;(.-)%sssp%.%s+(.-)%s(%b())$&amp;#039;, &amp;quot;&amp;#039;&amp;#039;%1&amp;#039;&amp;#039; ssp. &amp;#039;&amp;#039;%2&amp;#039;&amp;#039; %3&amp;quot;},				-- binomen ssp. subspecies (zoology) with errata or amended text&lt;br /&gt;
		{&amp;#039;(.-)%sssp%.%s+(.+)&amp;#039;, &amp;quot;&amp;#039;&amp;#039;%1&amp;#039;&amp;#039; ssp. &amp;#039;&amp;#039;%2&amp;#039;&amp;#039;&amp;quot;},							-- binomen ssp. subspecies (zoology)&lt;br /&gt;
		{&amp;#039;(.-)%ssubsp%.%s+(.-)%s(%b())$&amp;#039;, &amp;quot;&amp;#039;&amp;#039;%1&amp;#039;&amp;#039; subsp. &amp;#039;&amp;#039;%2&amp;#039;&amp;#039; %3&amp;quot;},			-- binomen subsp. subspecies (botany) with errata or amended text&lt;br /&gt;
		{&amp;#039;(.-)%ssubsp%.%s+(.+)&amp;#039;, &amp;quot;&amp;#039;&amp;#039;%1&amp;#039;&amp;#039; subsp. &amp;#039;&amp;#039;%2&amp;#039;&amp;#039;&amp;quot;},						-- binomen subsp. subspecies (botany)&lt;br /&gt;
		{&amp;#039;(.-)%svar%.%s+(.-)%s+(%b())$&amp;#039;, &amp;quot;&amp;#039;&amp;#039;%1&amp;#039;&amp;#039; var. &amp;#039;&amp;#039;%2&amp;#039;&amp;#039; %3&amp;quot;},				-- binomen var. variety (botany) with errata or amended text&lt;br /&gt;
		{&amp;#039;(.-)%svar%.%s+(.+)&amp;#039;, &amp;quot;&amp;#039;&amp;#039;%1&amp;#039;&amp;#039; var. &amp;#039;&amp;#039;%2&amp;#039;&amp;#039;&amp;quot;},							-- binomen var. variety (botany)&lt;br /&gt;
		{&amp;#039;(.-)%ssubvar%.%s+(.-)%s(%b())$&amp;#039;, &amp;quot;&amp;#039;&amp;#039;%1&amp;#039;&amp;#039; subvar. &amp;#039;&amp;#039;%2&amp;#039;&amp;#039; %3&amp;quot;},			-- binomen subvar. subvariety (botany) with errata or amended text&lt;br /&gt;
		{&amp;#039;(.-)%ssubvar%.%s+(.+)&amp;#039;, &amp;quot;&amp;#039;&amp;#039;%1&amp;#039;&amp;#039; subvar. &amp;#039;&amp;#039;%2&amp;#039;&amp;#039;&amp;quot;},						-- binomen subvar. subvariety (botany)&lt;br /&gt;
		{&amp;#039;(.-)%s*(%b())$&amp;#039;, &amp;quot;&amp;#039;&amp;#039;%1&amp;#039;&amp;#039; %2&amp;quot;},										-- binomen with errata or amended text&lt;br /&gt;
		{&amp;#039;(.+)&amp;#039;, &amp;quot;&amp;#039;&amp;#039;%1&amp;#039;&amp;#039;&amp;quot;},														-- binomen&lt;br /&gt;
		}&lt;br /&gt;
	&lt;br /&gt;
	for i, v in ipairs (patterns) do											-- spin through the patterns&lt;br /&gt;
		if title:match (v[1]) then												-- when a match&lt;br /&gt;
			title = title:gsub (v[1], v[2]);									-- add italics &lt;br /&gt;
			break;																-- and done&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat ({&amp;#039; |title=&amp;#039;, title});									-- return the |title= parameter&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; M A K E _ C I T E _ I U C N &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
parses apart an iucn-format citation copied from their webpage and reformats that into a {{cite iucn}} template for substing&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function make_cite_iucn (frame)&lt;br /&gt;
	local raw_iucn_cite = frame.args[1];&lt;br /&gt;
	&lt;br /&gt;
	local template = {&amp;#039;{{cite iucn &amp;#039;};											-- table that holds the {{cite iucn}} template as it is being assembled&lt;br /&gt;
	local year, volume, page, doi, accessdate;&lt;br /&gt;
&lt;br /&gt;
	year = raw_iucn_cite:match (&amp;#039;^%D+(%d%d%d%d)&amp;#039;);&lt;br /&gt;
	volume, page = raw_iucn_cite:match (&amp;#039;(%d%d%d%d):%s+(e%.T%d+A+%d+)%.%s&amp;#039;);&lt;br /&gt;
	doi = raw_iucn_cite:match (&amp;#039;10%.2305/IUCN%.UK%.[%d%-]+%.RLTS%.T%d+A%d+%.en&amp;#039;);&lt;br /&gt;
	accessdate = raw_iucn_cite:match (&amp;#039;Downloaded on ([^%.]+)%.&amp;#039;);&lt;br /&gt;
	&lt;br /&gt;
	table.insert (template, author_names_get (raw_iucn_cite));					-- add string of author name parameters&lt;br /&gt;
	table.insert (template, table.concat ({&amp;#039; |year=&amp;#039;, year}));					-- add formatted year&lt;br /&gt;
	table.insert (template, title_get (raw_iucn_cite));							-- add formatted title&lt;br /&gt;
	table.insert (template, table.concat ({&amp;#039; |volume=&amp;#039;, volume}));				-- add formatted volume&lt;br /&gt;
	table.insert (template, table.concat ({&amp;#039; |page=&amp;#039;, page}));					-- add formatted page&lt;br /&gt;
	table.insert (template, table.concat ({&amp;#039; |doi=&amp;#039;, doi}));					-- add formatted doi&lt;br /&gt;
	table.insert (template, table.concat ({&amp;#039; |access-date=&amp;#039;, accessdate}));		-- add formatted access-date&lt;br /&gt;
	table.insert (template, &amp;#039;}}&amp;#039;);												-- close the template&lt;br /&gt;
&lt;br /&gt;
	return table.concat (template);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T E D   F U N C T I O N S &amp;gt;------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	make_cite_iucn = make_cite_iucn,&lt;br /&gt;
	}&lt;/div&gt;</summary>
		<author><name>imported&gt;Legoktm</name></author>
	</entry>
</feed>