36 lines
1.3 KiB
Plaintext
36 lines
1.3 KiB
Plaintext
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});
|
|
|
|
rule [the plural of %singular is %plural] =:
|
|
(secret %plurals)->%singular = %plural
|
|
(secret %singulars)->%plural = %singular
|
|
(secret %canonicals)->%plural = %singular
|
|
|
|
rule [singular %plural] =:
|
|
%plural in (secret %singulars)
|
|
|
|
rule [plural %singular] =:
|
|
%singular in (secret %plurals)
|
|
|
|
rule [canonicalize %item_name] =:
|
|
%item_name in (secret %canonicals)
|
|
|
|
rule [rules that change plurals] =: ["the plural of % is %"]
|