fluent-icu-1.1.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 Language.Fluent.Value qualified as Value
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 -> Value
number = numberWith Cardinal 0
ordinal :: Scientific -> Value
ordinal = numberWith Ordinal 0
numberWith :: Form -> Int -> Scientific -> Value
numberWith form minimumFractionDigits amount =
Value.Number amount numberOptions{form, minimumFractionDigits}