<?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%2FAns%2FCS1Local</id>
	<title>Module:Sandbox/Ans/CS1Local - 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%2FAns%2FCS1Local"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Ans/CS1Local&amp;action=history"/>
	<updated>2026-04-17T18:45:02Z</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/Ans/CS1Local&amp;diff=145139&amp;oldid=prev</id>
		<title>imported&gt;Pppery: Pppery moved page Module:Citation/CS1/Local/sandbox to Module:Sandbox/Ans/CS1Local without leaving a redirect: Make this page not technically meet G8</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Ans/CS1Local&amp;diff=145139&amp;oldid=prev"/>
		<updated>2019-02-17T14:59:54Z</updated>

		<summary type="html">&lt;p&gt;Pppery moved page &lt;a href=&quot;/index.php?title=Module:Citation/CS1/Local/sandbox&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Module:Citation/CS1/Local/sandbox (page does not exist)&quot;&gt;Module:Citation/CS1/Local/sandbox&lt;/a&gt; to &lt;a href=&quot;/research/Module:Sandbox/Ans/CS1Local&quot; title=&quot;Module:Sandbox/Ans/CS1Local&quot;&gt;Module:Sandbox/Ans/CS1Local&lt;/a&gt; without leaving a redirect: Make this page not technically meet G8&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[--------------------------&amp;lt; F O R W A R D   D E C L A R A T I O N S &amp;gt;--------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local cfg;																		-- table of tables imported from slected Module:Citation/CS1/Configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function _convert_year(val, local_digits)&lt;br /&gt;
	val = mw.ustring.gsub (val, &amp;#039;%d&amp;#039;, local_digits);			-- translate &amp;#039;local&amp;#039; digits to Western 0-9&lt;br /&gt;
	if val:match(&amp;quot;^%d+$&amp;quot;) then&lt;br /&gt;
		val = val-543;&lt;br /&gt;
		-- convert year to 4 digits to prevent it being interpreted as day in en module&lt;br /&gt;
		if val&amp;lt;0 then&lt;br /&gt;
			return false; -- TODO: handle this&lt;br /&gt;
		--elseif val&amp;lt;1 then&lt;br /&gt;
		--	val=&amp;#039;000&amp;#039;..val;&lt;br /&gt;
		elseif val&amp;lt;10 then -- this should be faster than formatDate()?&lt;br /&gt;
			val=&amp;#039;000&amp;#039;..val;&lt;br /&gt;
		elseif val&amp;lt;100 then&lt;br /&gt;
			val=&amp;#039;00&amp;#039;..val;&lt;br /&gt;
		elseif val&amp;lt;1000 then&lt;br /&gt;
			val=&amp;#039;0&amp;#039;..val;&lt;br /&gt;
		end&lt;br /&gt;
		return val;&lt;br /&gt;
	end&lt;br /&gt;
	return false;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local en_month_name = {&amp;#039;Jan&amp;#039;, &amp;#039;Feb&amp;#039;, &amp;#039;Mar&amp;#039;, &amp;#039;Apr&amp;#039;, &amp;#039;May&amp;#039;, &amp;#039;Jun&amp;#039;, &amp;#039;Jul&amp;#039;, &amp;#039;Aug&amp;#039;, &amp;#039;Sep&amp;#039;, &amp;#039;Oct&amp;#039;, &amp;#039;Nov&amp;#039;, &amp;#039;Dec&amp;#039;};&lt;br /&gt;
local function _convert_local_date(val, date_names_local, local_digits)&lt;br /&gt;
	local dmy = mw.text.split(val, &amp;#039;%s+&amp;#039;);&lt;br /&gt;
	if #dmy == 3 then&lt;br /&gt;
		dmy[2] = date_names_local.long[dmy[2]] or date_names_local.short[dmy[2]];&lt;br /&gt;
		if dmy[2] then&lt;br /&gt;
			--dmy[1] = tonumber(dmy[1]); if dmy[1]&amp;lt;10 then dmy[1]=&amp;#039;0&amp;#039;..dmy[1]; end -- this should be faster than formatDate()&lt;br /&gt;
			--dmy[2] = tonumber(dmy[2]); if dmy[2]&amp;lt;10 then dmy[2]=&amp;#039;0&amp;#039;..dmy[2]; end&lt;br /&gt;
			--return dmy[3]-543 ..&amp;#039;-&amp;#039;..dmy[2]..&amp;#039;-&amp;#039;..dmy[1];&lt;br /&gt;
			dmy[1] = mw.ustring.gsub (dmy[1], &amp;#039;%d&amp;#039;, local_digits);			-- translate &amp;#039;local&amp;#039; digits to Western 0-9&lt;br /&gt;
			-- always interprete dmy[1] as day&lt;br /&gt;
			if dmy[1]:match(&amp;quot;^%d%d?$&amp;quot;) then&lt;br /&gt;
				dmy[1] = tonumber(dmy[1]); if dmy[1]&amp;gt;31 or dmy[1]&amp;lt;1 then return val; end&lt;br /&gt;
				dmy[3] = _convert_year(dmy[3], local_digits);&lt;br /&gt;
				if dmy[3] then&lt;br /&gt;
					return dmy[1]..&amp;#039; &amp;#039;..en_month_name[dmy[2]]..&amp;#039; &amp;#039;..dmy[3];&lt;br /&gt;
				end&lt;br /&gt;
				return val;&lt;br /&gt;
			end&lt;br /&gt;
			return val;&lt;br /&gt;
		end&lt;br /&gt;
		return val;&lt;br /&gt;
	elseif #dmy == 2 then&lt;br /&gt;
		local dmy1 = date_names_local.long[dmy[1]] or date_names_local.short[dmy[1]];&lt;br /&gt;
		if dmy1 then&lt;br /&gt;
			dmy[2] = _convert_year(dmy[2], local_digits);&lt;br /&gt;
			if dmy[2] then&lt;br /&gt;
				return en_month_name[dmy1]..&amp;#039; &amp;#039;..dmy[2];&lt;br /&gt;
			end&lt;br /&gt;
			return val;&lt;br /&gt;
		end&lt;br /&gt;
		dmy[2] = date_names_local.long[dmy[2]] or date_names_local.short[dmy[2]];&lt;br /&gt;
		if dmy[2] then&lt;br /&gt;
			dmy[1] = mw.ustring.gsub (dmy[1], &amp;#039;%d&amp;#039;, local_digits);			-- translate &amp;#039;local&amp;#039; digits to Western 0-9&lt;br /&gt;
			-- always interprete dmy[1] as day&lt;br /&gt;
			if dmy[1]:match(&amp;quot;^%d%d?$&amp;quot;) then&lt;br /&gt;
				dmy[1] = tonumber(dmy[1]); if dmy[1]&amp;gt;31 or dmy[1]&amp;lt;1 then return val; end&lt;br /&gt;
				return dmy[1]..&amp;#039; &amp;#039;..en_month_name[dmy[2]];&lt;br /&gt;
			end&lt;br /&gt;
			return val;&lt;br /&gt;
		end&lt;br /&gt;
		return val;&lt;br /&gt;
	elseif #dmy == 1 then&lt;br /&gt;
		dmy[1] = date_names_local.long[dmy[1]] or date_names_local.short[dmy[1]];&lt;br /&gt;
		if dmy[1] then&lt;br /&gt;
			return en_month_name[dmy[1]];&lt;br /&gt;
		end&lt;br /&gt;
		return val;&lt;br /&gt;
	else&lt;br /&gt;
		return val;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
&lt;br /&gt;
Some local wiki use non-Gregorian calendar.&lt;br /&gt;
Use this function to convert local non-Gregorian calendar to Gregorian calendar&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function convert_local_date(k, val)&lt;br /&gt;
	if &amp;#039;year&amp;#039;==k then&lt;br /&gt;
		--return 2010;&lt;br /&gt;
		return val;&lt;br /&gt;
	--elseif &amp;#039;date&amp;#039;==k or &amp;#039;access-date&amp;#039;==k or &amp;#039;archive-date&amp;#039;==k or &amp;#039;doi-broken-date&amp;#039;==k or &amp;#039;embargo&amp;#039;==k or &amp;#039;lay-date&amp;#039;==k or &amp;#039;publication-date&amp;#039;==k then&lt;br /&gt;
	--	return _convert_local_date(val, cfg.date_names[&amp;#039;local&amp;#039;], cfg.date_names.local_digits);&lt;br /&gt;
	--elseif &amp;#039;embargo&amp;#039;==k then&lt;br /&gt;
	--	return val;&lt;br /&gt;
	else&lt;br /&gt;
mw.log(k, _convert_local_date(val, cfg.date_names[&amp;#039;local&amp;#039;], cfg.date_names.local_digits));&lt;br /&gt;
		return _convert_local_date(val, cfg.date_names[&amp;#039;local&amp;#039;], cfg.date_names.local_digits);&lt;br /&gt;
		--return val;&lt;br /&gt;
	end&lt;br /&gt;
	--return &amp;#039;2010-04-30&amp;#039;;&lt;br /&gt;
	--return val;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S E T _ S E L E C T E D _ M O D U L E S &amp;gt;--------------------------------------&lt;br /&gt;
&lt;br /&gt;
Sets local imported functions table to same (live or sandbox) as that used by the other modules.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function set_selected_modules (cfg_table_ptr, utilities_page_ptr)&lt;br /&gt;
	cfg = cfg_table_ptr;														-- import tables from selected Module:Citation/CS1/Configuration&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T S &amp;gt;----------------------------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return 	{&lt;br /&gt;
	convert_local_date = convert_local_date,&lt;br /&gt;
	set_selected_modules = set_selected_modules,&lt;br /&gt;
	_convert_local_date = _convert_local_date, -- TODO: split to another separated module?&lt;br /&gt;
	_convert_local_year = _convert_year, -- TODO: split to another separated module?&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>imported&gt;Pppery</name></author>
	</entry>
</feed>