<?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%2FS-1-5-7%2Fversiontests</id>
	<title>Module:Sandbox/S-1-5-7/versiontests - 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%2FS-1-5-7%2Fversiontests"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/S-1-5-7/versiontests&amp;action=history"/>
	<updated>2026-04-21T13:24:32Z</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/S-1-5-7/versiontests&amp;diff=146145&amp;oldid=prev</id>
		<title>imported&gt;S-1-5-7 at 07:56, 13 March 2020</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/S-1-5-7/versiontests&amp;diff=146145&amp;oldid=prev"/>
		<updated>2020-03-13T07:56:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local module = {};     --All lua modules on Wikipedia must begin by defining a variable &lt;br /&gt;
                    --that will hold their externally accessible functions.&lt;br /&gt;
                    --Such variables can have whatever name you want and may &lt;br /&gt;
                    --also contain various data as well as functions.&lt;br /&gt;
                    &lt;br /&gt;
function get_raw_text(str)&lt;br /&gt;
	local builder = &amp;quot;&amp;quot;&lt;br /&gt;
	for index=1,string.len(str),1&lt;br /&gt;
	do&lt;br /&gt;
		local ch = string.sub(str,index,index)&lt;br /&gt;
		if ( ch == &amp;#039; &amp;#039; or&lt;br /&gt;
				ch == &amp;#039;,&amp;#039; or&lt;br /&gt;
				ch == &amp;#039;.&amp;#039; or&lt;br /&gt;
				ch == &amp;#039;-&amp;#039; or &lt;br /&gt;
				ch == &amp;#039;_&amp;#039; or &lt;br /&gt;
				ch == &amp;#039;&amp;amp;&amp;#039; or&lt;br /&gt;
				ch == &amp;#039;#&amp;#039; or&lt;br /&gt;
				ch == &amp;#039;;&amp;#039; or&lt;br /&gt;
				ch == &amp;#039;(&amp;#039; or &lt;br /&gt;
				ch == &amp;#039;)&amp;#039; or&lt;br /&gt;
				(ch &amp;gt;= &amp;#039;0&amp;#039; and ch &amp;lt;= &amp;#039;9&amp;#039;) or&lt;br /&gt;
				(ch &amp;gt;= &amp;#039;A&amp;#039; and ch &amp;lt; &amp;#039;Z&amp;#039;) or &lt;br /&gt;
				( ch &amp;gt;= &amp;#039;a&amp;#039; and ch &amp;lt; &amp;#039;z&amp;#039;) ) then&lt;br /&gt;
			builder = builder .. ch&lt;br /&gt;
		else&lt;br /&gt;
			builder = builder .. &amp;quot;\\&amp;quot; .. ch .. &amp;quot; (&amp;quot; .. string.byte(ch,1) .. &amp;quot;)&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return builder&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function module.extract_version(frame)&lt;br /&gt;
	local base = frame.args[1]&lt;br /&gt;
	local stripAdditional = frame.args[2]&lt;br /&gt;
	&lt;br /&gt;
	-- remove the markers&lt;br /&gt;
	base = mw.text.killMarkers(base)&lt;br /&gt;
	&lt;br /&gt;
	-- the version is in the version beginning and is separated by &amp;#039;(&amp;#039;&lt;br /&gt;
	local version = string.match(base, &amp;quot;^%s*([^(]+)%s*%(&amp;quot;, 1, true)&lt;br /&gt;
	if version == nil then&lt;br /&gt;
		return &amp;quot;No version?&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- it seems like match() doesn&amp;#039;t support non-greedy captures, so just&lt;br /&gt;
	-- strip the whitespaces&lt;br /&gt;
	version = mw.text.trim(version)&lt;br /&gt;
	&lt;br /&gt;
	-- sometimes there is text that is put in front of it like&lt;br /&gt;
	--   Version 2019 24.2.2&lt;br /&gt;
	-- and we optionally want to remove that&lt;br /&gt;
	if stripAdditional == &amp;quot;true&amp;quot; then&lt;br /&gt;
		test = string.find(version, &amp;quot; &amp;quot;)&lt;br /&gt;
		while ( test ~= nil ) do&lt;br /&gt;
			version = string.sub(version, test + 1, string.len(version))&lt;br /&gt;
			test = string.find(version, &amp;quot; &amp;quot;) &lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- done&lt;br /&gt;
	return version&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function module.extract_date(frame)&lt;br /&gt;
	local base = frame.args[1]&lt;br /&gt;
	local format = frame.args[2]&lt;br /&gt;
	&lt;br /&gt;
	-- remove the markers&lt;br /&gt;
	base = mw.text.killMarkers(base)&lt;br /&gt;
	&lt;br /&gt;
	-- remove HTML entities&lt;br /&gt;
	base = mw.text.decode(base)&lt;br /&gt;
	&lt;br /&gt;
	-- if they request it in raw format, just extract it&lt;br /&gt;
	if format == nil or format == &amp;quot;raw&amp;quot; then&lt;br /&gt;
		-- remove spans&lt;br /&gt;
		--base = base:gsub(&amp;quot;&amp;lt;span[^&amp;gt;]*&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		--base = base:gsub(&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
		-- look for &amp;quot;ago&amp;quot; to get the date part&lt;br /&gt;
		local datepart = base:match(&amp;quot;%(([^)]*);[^)]*ago&amp;quot;)	&lt;br /&gt;
		if datepart == nil then&lt;br /&gt;
			return &amp;quot;No date?&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- remove any extra space&lt;br /&gt;
		datepart = mw.text.trim(datepart)&lt;br /&gt;
		return datepart&lt;br /&gt;
	else&lt;br /&gt;
		&lt;br /&gt;
		-- extract the &amp;quot;dtstart&amp;quot; part&lt;br /&gt;
		local datepart = base:match(&amp;quot;%(([^)]*);[^)]*ago&amp;quot;)	&lt;br /&gt;
&lt;br /&gt;
		-- parse it; dates usually are in the form:&lt;br /&gt;
		--			Month Year&lt;br /&gt;
		--			Month Day, Year&lt;br /&gt;
		--			Day Month Year&lt;br /&gt;
		-- TODO&lt;br /&gt;
		&lt;br /&gt;
		-- and convert it to the &lt;br /&gt;
	&lt;br /&gt;
		-- done&lt;br /&gt;
		return &amp;quot;TODO&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function module.debug_get_raw_text(frame)&lt;br /&gt;
	local base = frame.args[1]&lt;br /&gt;
	base = mw.text.killMarkers(base)&lt;br /&gt;
	local builder = get_raw_text(base)&lt;br /&gt;
	return &amp;quot;&amp;lt;pre&amp;gt;&amp;quot; .. builder .. &amp;quot;&amp;lt;/pre&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return module&lt;/div&gt;</summary>
		<author><name>imported&gt;S-1-5-7</name></author>
	</entry>
</feed>