nomsu/lib/plurals.nom

36 lines
1.3 KiB
Plaintext
Raw Normal View History

2017-09-19 00:35:37 -07:00
require "lib/core.nom"
require "lib/secrets.nom"
# Plurals
with secrets:
lua block ".."
|local endings = setmetatable({x="es",c="es",s="es"}, {__index=function() return "s" end})
|secrets.plurals = setmetatable({}, {__index=function(self,key)
| return key..endings[key:sub(-1)]
|end})
|secrets.singulars = setmetatable({}, {__index=function(self,key)
| if key:sub(-2) == "es" and rawget(endings, key:sub(-3,-3)) then return key:sub(1,-3) end
| if key:sub(-1) == "s" then return key:sub(1,-2) end
| return key
|end})
|secrets.canonicals = setmetatable({}, {__index=function(self,key)
| if key:sub(-1) == "s" then return secrets.singulars[key] end
| return key
|end})
2017-09-29 22:04:03 -07:00
rule (the plural of %singular is %plural) =:
(secret %plurals)->%singular =: %plural
(secret %singulars)->%plural =: %singular
(secret %canonicals)->%plural =: %singular
2017-09-29 22:04:03 -07:00
rule (singular %plural) =:
%plural in (secret %singulars)
2017-09-29 22:04:03 -07:00
rule (plural %singular) =:
%singular in (secret %plurals)
2017-09-29 22:04:03 -07:00
rule (canonicalize %item-name) =:
%item-name in (secret %canonicals)
2017-09-29 22:04:03 -07:00
rule (rules that change plurals) =: ["the plural of % is %"]