packages feed

numerals-0.4: src/Text/Numeral/Entry.hs

{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE PackageImports    #-}
{-# LANGUAGE UnicodeSyntax     #-}

module Text.Numeral.Entry
    ( Conversion(..)
    , Entry(..)
    , emptyEntry
    ) where

--------------------------------------------------------------------------------
-- Imports
--------------------------------------------------------------------------------

import "base" Data.Maybe  ( Maybe(Nothing) )
import "base-unicode-symbols" Prelude.Unicode ( ℤ )
import "this" Text.Numeral.Exp.Reified ( Exp )
import "this" Text.Numeral.Grammar.Reified ( Inflection )
import "text" Data.Text ( Text )


--------------------------------------------------------------------------------
-- Language entry
--------------------------------------------------------------------------------

data Conversion α = Conversion
    { toNumeral   ∷ Inflection → α → Maybe Text
    , toStructure ∷ α → Exp Inflection
    }

data Entry = Entry
    { entIso639_1       ∷ Maybe Text
    , entIso639_2       ∷ [Text]
    , entIso639_3       ∷ Maybe Text
    , entNativeNames    ∷ [Text]
    , entEnglishName    ∷ Maybe Text
    , entVariant        ∷ Maybe Text
    , entCardinal       ∷ Maybe (Conversion ℤ)
    , entOrdinal        ∷ Maybe (Conversion ℤ)
    , entPartitive      ∷ Maybe (Conversion (ℤ, ℤ))
    , entMultiplicative ∷ Maybe (Conversion ℤ)
    }

emptyEntry ∷ Entry
emptyEntry = Entry
    { entIso639_1       = Nothing
    , entIso639_2       = []
    , entIso639_3       = Nothing
    , entNativeNames    = []
    , entEnglishName    = Nothing
    , entVariant        = Nothing
    , entCardinal       = Nothing
    , entOrdinal        = Nothing
    , entPartitive      = Nothing
    , entMultiplicative = Nothing
    }