fluent-1.1.0: src/Language/Fluent/Plural.hs
-- | <https://www.unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules>
module Language.Fluent.Plural where
import Data.Char (toLower)
import Data.List.Extra (enumerate)
import Prelude
-- | A plural category of a number.
data Category
= Zero
| One
| Two
| Few
| Many
| Other
deriving stock (Eq, Show, Bounded, Enum)
instance Read Category where
readsPrec _ s = [(it, "") | it <- enumerate, fmap toLower (show it) == fmap toLower s]
-- | The kind of plural category of a number.
data Form
= Cardinal
| Ordinal
deriving stock (Eq, Show, Bounded, Enum)
instance Read Form where
readsPrec _ s = [(it, "") | it <- enumerate, fmap toLower (show it) == fmap toLower s]