fluent-icu-1.0.0: test/Prelude.hs
{-# LANGUAGE PackageImports #-}
module Prelude
( module Prelude
, module Data.Scientific
, module Data.Text
, module Data.Time
, module Language.Fluent
, module Language.Fluent.ICU
, module Test.Hspec
)
where
import Data.Foldable qualified as Foldable
import Data.List.NonEmpty (NonEmpty)
import Data.List.NonEmpty qualified as NonEmpty
import Data.Scientific (Scientific)
import Data.Text (Text)
import Data.Time (UTCTime)
import Language.Fluent
import Language.Fluent.Bundle qualified as Bundle
import Language.Fluent.ICU
import Language.Fluent.Locale qualified as Locale
import Test.Hspec
import "base" Prelude
instance
(Foldable f, r ~ Either String Text)
=> Translate (f LocaleName -> Resource -> r)
where
translate arguments (Foldable.toList -> NonEmpty.fromList -> locales) =
translate arguments
. Bundle.override (Bundle.UseIsolating False)
. bundle locales
. pure
instance (r ~ Either String Text) => Translate (LocaleName -> Resource -> r) where
translate arguments = translate arguments . pure @NonEmpty
instance (r ~ Either String Text) => Translate (Resource -> r) where
translate arguments = translate arguments $ Locale.fromCode @LocaleName "en-GB"
number :: Scientific -> SomeValue
number = numberWith Cardinal 0
ordinal :: Scientific -> SomeValue
ordinal = numberWith Ordinal 0
numberWith :: Form -> Int -> Scientific -> SomeValue
numberWith form minimumFractionDigits amount =
NumberValue amount numberOptions{form, minimumFractionDigits}