aboutsummaryrefslogtreecommitdiff
path: root/lib/plurals.nom
blob: 49fd6d1a1b33e3fa1d391ae86983c4d98205579b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
require "lib/core.nom"

# Plurals
using:
    <%endings> = (chain {x="es",c="es",s="es"} to "s")
    <%plurals> = (chain {} to (: "\%\((<%endings>)->(%| -1|))"))
    <%singulars> = (..)
        chain {} to:
            when:
                * (((%| -2|) == "es") and (=lua"rawget(\(<%endings>), \(%| -3|))")):
                    %|1 - -3|
                * (%| -1| == "s"):
                    %|1 - -2|
                else: %
..do:
    rule [the plural of %singular is %plural] =:
        (<%plurals>)->%singular = %plural
        (<%singulars>)->%plural = %singular

    rule [singular %plural] =:
        (<%singulars>)->%plural

    rule [plural %singular] =:
        (<%plurals>)->%singular