Module:Grammar/Conjugate: Difference between revisions

Jump to navigation Jump to search
improved pluralization for things with "of" in the name (drops of nectar, clumps of grave moss, knight commanders of the holy temple, etc)
mNo edit summary
(improved pluralization for things with "of" in the name (drops of nectar, clumps of grave moss, knight commanders of the holy temple, etc))
(5 intermediate revisions by 2 users not shown)
Line 2: Line 2:


function p.pluralize(str, apostrophe)
function p.pluralize(str, apostrophe)
  apostrophe = apostrophe or ''
apostrophe = apostrophe or ''
  local irregularplurals = {
local irregularplurals = {
    man = 'men'
        Man = 'Men',
  }
    man = 'men'
  if irregularplurals[str] ~= nil then
}
    return irregularplurals[str]
if irregularplurals[str] ~= nil then
  elseif (str:sub(-1) == 's') then
    return irregularplurals[str]
    return (str .. apostrophe)  --return unmodified (ends with 's', like 'boots', so we shouldn't append another 's')
elseif (str:sub(-1) == 's') then
   elseif (string.sub(str, -1) == 'y') and apostrophe == '' then
return (str .. apostrophe)  --return unmodified (ends with 's', like 'boots', so we shouldn't append another 's')
    return (string.sub(str, 1, -2) ..  'ies')
elseif (string.sub(str, -2) == 'ey') and apostrophe == '' then
  elseif (str:sub(-1) == 'z' or str:sub(-2) == 'ch' or str:sub(-2) == 'sh' or str:sub(-1) == 'x') and apostrophe == '' then
    return (str .. 's')   --for example, "lamprey"
    return (str ..  'es')
elseif (string.sub(str, -1) == 'y') and apostrophe == '' then
  else
    return (string.sub(str, 1, -2) ..  'ies')
    return (str.. apostrophe .. 's')
    elseif (string.find(str, ' of ')) then
  end
        i = string.find(str, ' of ')
        return p.pluralize(string.sub(str, 1, i-1)) .. string.sub(str, i)
elseif (str:sub(-1) == 'z' or str:sub(-2) == 'ch' or str:sub(-2) == 'sh' or str:sub(-1) == 'x') and apostrophe == '' then
        if (str:sub(-6) == 'vortex') then  --special case, capitalize vortex the same way the game does in in-game text like Quantum Jitters description
            return (string.sub(str, 1, -3) .. 'ices')
        end
    return (str ..  'es')
else
    return (str.. apostrophe .. 's')
end
end
end


function p.make_possessive(string)
function p.make_possessive(string)
  return p.pluralize(string, "'")
return p.pluralize(string, "'")
end
end


function p.singularverb(string)
function p.singularverb(string)
  --[ Assumes the input string is already a plural verb.]
--[ Assumes the input string is already a plural verb.]
  local irregularsingulars = {
local irregularsingulars = {
     ["are"] = 'is',
     ["are"] = 'is',
     ["were"] = 'was',
     ["were"] = 'was',
Line 31: Line 40:
     ["'re"] = "'s",
     ["'re"] = "'s",
     ["don't"] = "doesn't",
     ["don't"] = "doesn't",
     ["'ve"] = "'s"
     ["'ve"] = "'s",
  }
    ["do"] = "does"
  local result = irregularsingulars[string]
}
  if result ~= nil and result ~= '' then
local result = irregularsingulars[string]
    return result
if result ~= nil and result ~= '' then
  else
    return result
    return string .. "s"
else
  end
    return string .. "s"
end
end
end
function p.capitalize(str)
return str:gsub("^%l", string.upper)
end


return p
return p

Navigation menu