Module:Util

From RTGame Wiki
Revision as of 21:32, 12 February 2021 by RTGame>Alistair3149 (oops should be ves instead of ies)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Documentation for this module may be created at Module:Util/doc

-- Lua utility module.
-- Usage: {{#invoke:util|function|arg1|arg2|...}}
local p = {}
-- Pluralize a word based on local dictionary or rules.
-- Usage: {{#invoke:util|pluralize|arg}}
function p.pluralize(frame)
  local base= frame.args[1]
  local return_val
  local base_len=string.len(base)
  local base_end=string.sub(base,-1)
  local base_last2=string.sub(base,-2)
  -- dictionary first - irregular plurals
  if (string.lower(base)=="nebula") then
    return_val = string.sub(base,1,1).."ebulae"
  elseif(string.lower(base)=="torpedo") then
    return_val = string.sub(base,1,1).."orpedoes"
  -- rules
  elseif (base_end=="y") then
    if (base_last2=="ey") then
      -- ex - money
      return_val = string.sub(base,1,base_len-2).."ies"
    else 
      -- ex - Secretary
      return_val = string.sub(base,1,base_len-1) .. "ies"
    end
  elseif (base_end=="h") then
    if (base_last2=="ch" or base_last2=="sh") then 
      -- ex church or fish
      return_val = base .. "es"
    else
      -- ex - blah
      return_val = base .. "s" 
    end
  elseif (base_end=="s") then -- ex - Idris - Or should we deal with things like crisis/crises as a rule?
    return_val = base
  elseif (base_end=="e") then
  	if (base_last2=="fe") then
	  	-- ex knife or wife
	  	return_val = string.sub(base,1,base_len-2) .. "ves"
  	else
      -- ex - blah
      return_val = base .. "s"
    end
  else -- default rule
    return_val = base .. "s"
  end
  return return_val
end
return p