Home
Random
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Sandbox/Stibba0/Names
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
-- Extracting names from names for GCI! :) local dutchSeparation = { "van", "voor", "aan", "uit", "onder", "boven", "in", "de", "den", "der", "te", "ten", "ter" } local chineseSeperation = { "li", "zhang", "chen", "zhao", "wu", "zhou", "wang", "ma", "pan", "gu", "mao" } local arabicSeperation = { "el", "al", "ash" } local spanishSeperation = { "de" } local spanishLetters = { "á", "é", "í", "ó", "ú", "ü", "ñ" } local suffix = { "Sr", "Jr", "I", "V", "X" } local formats = { {"nl", dutchSeparation}, {"zh", chineseSeperation}, {"en", {}}, {"ar", arabicSeperation}, {"es", spanishSeperation} } local divideWords = function(text) wordTable = {} for word in string.gmatch(text, "%S+") do wordTable[#wordTable+1] = word end for i=1, #suffix do if string.match(wordTable[#wordTable], suffix[i]) then if #wordTable[#wordTable] < 4 then wordTable[#wordTable] = nil end end end return wordTable end local identifyFormat = function(wordList, fullname) local nameFormat = nil for i=1, #formats do for z=1, #formats[i][2] do for x=1, #wordList do if string.lower(wordList[x]) == formats[i][2][z] then if string.lower(wordList[x]) == "de" then for b=1, #spanishLetters do if string.match(fullname, spanishLetters[b]) then return {"es", x} end end for b=1, #wordList do if wordList[b][#wordList[b]] == 'e' or wordList[b][#wordList[b]] == 'a' or wordList[b][#wordList[b]] == 'o' or wordList[b][#wordList[b]] == 'i' then return {"es", x} end end return {"nl", x} else return {formats[i][1], x} end end end end end return {"std", nil} end local nameSeparation = function(wordList, lastCount) local names = { ["first"]="", ["last"]="" } for i=1, #wordList do if i < lastCount then names["first"] = names["first"] .. " " .. wordList[i] else names["last"] = names["last"] .. " " .. wordList[i] end end return names end local formatName = function(wordList, nameFormat, providedFormat) local names = { ["first"]="", ["last"]="" } if not(providedFormat == "") then nameFormat[1] = providedFormat end if nameFormat[1] == "nl" or nameFormat[1] == "ar" then names = nameSeparation(wordList, nameFormat[2]) end if nameFormat[1] == "zh" then for i=1, #wordList do if i == 1 then names["last"] = wordList[i] else names["first"] = names["first"] .. " " .. wordList[i] end end end if nameFormat[1] == "es" then if not( nameFormat[2] == nil) then if nameFormat[2] > 2 then for i=1, #wordList do if i < (nameFormat[2]-1) then names["first"] = names["first"] .. " " .. wordList[i] else names["last"] = names["last"] .. " " .. wordList[i] end end elseif #wordList > 3 then names = nameSeparation(wordList, nameFormat[2]) end else names = nameSeparation(wordList, #wordList) end end if nameFormat[1] == "std" then names = nameSeparation(wordList, #wordList) end return names end local returnNameString = function(names) return "<b>Given</b> = " .. names["first"] .. " -- <b>Family</b> = " .. names["last"] end local p = {} p.getNames = function(frame) local fullname = frame.args.name local provFormat = frame.args.format or "" local wordList = divideWords(fullname) local nameFormat = identifyFormat(wordList, fullname) local names = formatName(wordList, nameFormat, provFormat) local nameString = returnNameString(names) return nameString end return p
Summary:
Please note that all contributions to Stockhub may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Sandbox/Stibba0/Names/doc
(
edit
)