<?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%2FStibba0%2FNames</id>
	<title>Module:Sandbox/Stibba0/Names - 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%2FStibba0%2FNames"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Stibba0/Names&amp;action=history"/>
	<updated>2026-04-21T20:04:06Z</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/Stibba0/Names&amp;diff=146231&amp;oldid=prev</id>
		<title>imported&gt;Stibba0 at 22:18, 7 December 2018</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Stibba0/Names&amp;diff=146231&amp;oldid=prev"/>
		<updated>2018-12-07T22:18:00Z</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;-- Extracting names from names for GCI! :)&lt;br /&gt;
local dutchSeparation = {&lt;br /&gt;
	&amp;quot;van&amp;quot;,&lt;br /&gt;
	&amp;quot;voor&amp;quot;,&lt;br /&gt;
	&amp;quot;aan&amp;quot;,&lt;br /&gt;
	&amp;quot;uit&amp;quot;,&lt;br /&gt;
	&amp;quot;onder&amp;quot;,&lt;br /&gt;
	&amp;quot;boven&amp;quot;,&lt;br /&gt;
	&amp;quot;in&amp;quot;,&lt;br /&gt;
	&amp;quot;de&amp;quot;,&lt;br /&gt;
	&amp;quot;den&amp;quot;,&lt;br /&gt;
	&amp;quot;der&amp;quot;,&lt;br /&gt;
	&amp;quot;te&amp;quot;,&lt;br /&gt;
	&amp;quot;ten&amp;quot;,&lt;br /&gt;
	&amp;quot;ter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
local chineseSeperation = {&lt;br /&gt;
	&amp;quot;li&amp;quot;,&lt;br /&gt;
	&amp;quot;zhang&amp;quot;,&lt;br /&gt;
	&amp;quot;chen&amp;quot;,&lt;br /&gt;
	&amp;quot;zhao&amp;quot;,&lt;br /&gt;
	&amp;quot;wu&amp;quot;,&lt;br /&gt;
	&amp;quot;zhou&amp;quot;,&lt;br /&gt;
	&amp;quot;wang&amp;quot;,&lt;br /&gt;
	&amp;quot;ma&amp;quot;,&lt;br /&gt;
	&amp;quot;pan&amp;quot;,&lt;br /&gt;
	&amp;quot;gu&amp;quot;,&lt;br /&gt;
	&amp;quot;mao&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
local arabicSeperation = {&lt;br /&gt;
	&amp;quot;el&amp;quot;,&lt;br /&gt;
	&amp;quot;al&amp;quot;,&lt;br /&gt;
	&amp;quot;ash&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
local spanishSeperation = {&lt;br /&gt;
	&amp;quot;de&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
local spanishLetters = {&lt;br /&gt;
	&amp;quot;á&amp;quot;, &lt;br /&gt;
	&amp;quot;é&amp;quot;, &lt;br /&gt;
	&amp;quot;í&amp;quot;, &lt;br /&gt;
	&amp;quot;ó&amp;quot;, &lt;br /&gt;
	&amp;quot;ú&amp;quot;, &lt;br /&gt;
	&amp;quot;ü&amp;quot;, &lt;br /&gt;
	&amp;quot;ñ&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
local suffix = {&lt;br /&gt;
	&amp;quot;Sr&amp;quot;,&lt;br /&gt;
	&amp;quot;Jr&amp;quot;,&lt;br /&gt;
	&amp;quot;I&amp;quot;,&lt;br /&gt;
	&amp;quot;V&amp;quot;,&lt;br /&gt;
	&amp;quot;X&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
local formats = {&lt;br /&gt;
	{&amp;quot;nl&amp;quot;, dutchSeparation},&lt;br /&gt;
	{&amp;quot;zh&amp;quot;, chineseSeperation},&lt;br /&gt;
	{&amp;quot;en&amp;quot;, {}},&lt;br /&gt;
	{&amp;quot;ar&amp;quot;, arabicSeperation},&lt;br /&gt;
	{&amp;quot;es&amp;quot;, spanishSeperation}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local divideWords = function(text)&lt;br /&gt;
	wordTable = {}&lt;br /&gt;
	for word in string.gmatch(text, &amp;quot;%S+&amp;quot;) do &lt;br /&gt;
		wordTable[#wordTable+1] = word&lt;br /&gt;
	end	&lt;br /&gt;
	for i=1, #suffix do&lt;br /&gt;
		if string.match(wordTable[#wordTable], suffix[i]) then&lt;br /&gt;
			if #wordTable[#wordTable] &amp;lt; 4 then&lt;br /&gt;
				wordTable[#wordTable] = nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return wordTable&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local identifyFormat = function(wordList, fullname)&lt;br /&gt;
	local nameFormat = nil&lt;br /&gt;
	for i=1, #formats do&lt;br /&gt;
		for z=1, #formats[i][2] do&lt;br /&gt;
			for x=1, #wordList do&lt;br /&gt;
				if string.lower(wordList[x]) == formats[i][2][z] then&lt;br /&gt;
					if string.lower(wordList[x]) == &amp;quot;de&amp;quot; then&lt;br /&gt;
						for b=1, #spanishLetters do&lt;br /&gt;
							if string.match(fullname, spanishLetters[b]) then&lt;br /&gt;
								return {&amp;quot;es&amp;quot;, x}	&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
						for b=1, #wordList do&lt;br /&gt;
							if wordList[b][#wordList[b]] == &amp;#039;e&amp;#039; or wordList[b][#wordList[b]] == &amp;#039;a&amp;#039; or wordList[b][#wordList[b]] == &amp;#039;o&amp;#039; or wordList[b][#wordList[b]] == &amp;#039;i&amp;#039; then&lt;br /&gt;
								return {&amp;quot;es&amp;quot;, x}	&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
						return {&amp;quot;nl&amp;quot;, x}&lt;br /&gt;
					else&lt;br /&gt;
						return {formats[i][1], x}&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return {&amp;quot;std&amp;quot;, nil}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local nameSeparation = function(wordList, lastCount)&lt;br /&gt;
	local names = {&lt;br /&gt;
		[&amp;quot;first&amp;quot;]=&amp;quot;&amp;quot;,&lt;br /&gt;
		[&amp;quot;last&amp;quot;]=&amp;quot;&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
	for i=1, #wordList do&lt;br /&gt;
		if 	i &amp;lt; lastCount then&lt;br /&gt;
			names[&amp;quot;first&amp;quot;] = names[&amp;quot;first&amp;quot;] .. &amp;quot; &amp;quot; .. wordList[i]	&lt;br /&gt;
		else&lt;br /&gt;
			names[&amp;quot;last&amp;quot;] = names[&amp;quot;last&amp;quot;] .. &amp;quot; &amp;quot; .. wordList[i]		&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return names&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local formatName = function(wordList, nameFormat, providedFormat)&lt;br /&gt;
	local names = {&lt;br /&gt;
		[&amp;quot;first&amp;quot;]=&amp;quot;&amp;quot;,&lt;br /&gt;
		[&amp;quot;last&amp;quot;]=&amp;quot;&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
	if not(providedFormat == &amp;quot;&amp;quot;) then&lt;br /&gt;
		nameFormat[1] = providedFormat	&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if nameFormat[1] == &amp;quot;nl&amp;quot; or nameFormat[1] == &amp;quot;ar&amp;quot; then&lt;br /&gt;
		names = nameSeparation(wordList, nameFormat[2])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if nameFormat[1] == &amp;quot;zh&amp;quot; then&lt;br /&gt;
		for i=1, #wordList do&lt;br /&gt;
			if 	i == 1 then&lt;br /&gt;
				names[&amp;quot;last&amp;quot;] = wordList[i]	&lt;br /&gt;
			else&lt;br /&gt;
				names[&amp;quot;first&amp;quot;] = names[&amp;quot;first&amp;quot;] .. &amp;quot; &amp;quot; .. wordList[i]		&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if nameFormat[1] == &amp;quot;es&amp;quot; then&lt;br /&gt;
		if not( nameFormat[2] == nil) then&lt;br /&gt;
			if nameFormat[2] &amp;gt; 2 then&lt;br /&gt;
				for i=1, #wordList do&lt;br /&gt;
					if 	i &amp;lt; (nameFormat[2]-1) then&lt;br /&gt;
						names[&amp;quot;first&amp;quot;] = names[&amp;quot;first&amp;quot;] .. &amp;quot; &amp;quot; .. wordList[i]	&lt;br /&gt;
					else&lt;br /&gt;
						names[&amp;quot;last&amp;quot;] = names[&amp;quot;last&amp;quot;] .. &amp;quot; &amp;quot; .. wordList[i]		&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			elseif #wordList &amp;gt; 3 then&lt;br /&gt;
				names = nameSeparation(wordList, nameFormat[2])	&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			names = nameSeparation(wordList, #wordList)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if nameFormat[1] == &amp;quot;std&amp;quot; then&lt;br /&gt;
		names = nameSeparation(wordList, #wordList)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return names&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local returnNameString = function(names)&lt;br /&gt;
	return &amp;quot;&amp;lt;b&amp;gt;Given&amp;lt;/b&amp;gt; = &amp;quot; .. names[&amp;quot;first&amp;quot;] .. &amp;quot; -- &amp;lt;b&amp;gt;Family&amp;lt;/b&amp;gt; = &amp;quot; .. names[&amp;quot;last&amp;quot;]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
p.getNames = function(frame)&lt;br /&gt;
	local fullname = frame.args.name&lt;br /&gt;
	local provFormat = frame.args.format or &amp;quot;&amp;quot;&lt;br /&gt;
	local wordList = divideWords(fullname)&lt;br /&gt;
	local nameFormat = identifyFormat(wordList, fullname)&lt;br /&gt;
	local names = formatName(wordList, nameFormat, provFormat)&lt;br /&gt;
	local nameString = returnNameString(names)&lt;br /&gt;
	return nameString&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Stibba0</name></author>
	</entry>
</feed>