Module:CapitalizationCheck

local p = {} local getArgs = require('Module:Arguments').getArgs data = mw.loadData("Module:CapitalizationCheck/Data")

function checkFirstGen(s) if s == "DnM" then return true elseif s == "Doubutsu no Mori" then return true elseif s == "DnM+" then return true elseif s == "Doubutsu no Mori+" then return true elseif s == "PG" then return true elseif s == "Animal Crossing" then return true elseif s == "DnMe+" then return true elseif s == "Doubutsu no Mori e+" then return true elseif s == "iQue" then return true elseif s == "Dòngwù Sēnlín" then return true elseif s == "Dongwu Senlin" then return true else return false end end

function p.main(frame) local function isEmpty(s) return s == nil or s == '' end local print = '' local args        = getArgs(frame) local compare     = args[1] or '' local game        = args[2] or '' local display     = args[3] or '' if not isEmpty(display) then if checkCaps(compare, game) == false then print = frame:preprocess(' (\'\'\'\'\'\') ') end else if checkCaps(compare, game) == false then print = "" end end return print end

-- https://stackoverflow.com/questions/2421695/first-character-uppercase-lua function firstToUpper(str) return (str:gsub("^%l", string.upper)) end

function checkCaps(compare, game) local sentenceCase = "" if checkFirstGen(game) then if compare == firstToUpper(data.firstGen[compare:lower]) then return true elseif compare == data.firstGen[compare:lower] then return true else return false end elseif game == "WW" or game == "Wild World" then if compare == firstToUpper(data.wildWorld[compare:lower]) then return true elseif compare == data.wildWorld[compare:lower] then return true else return false end elseif game == "NH" or game == "New Horizons" then if compare == firstToUpper(data.newHorizons[compare:lower]) then return true elseif compare == data.newHorizons[compare:lower] then return true else return false end end end

return p