{-# LANGUAGE OverloadedStrings #-}
module Study.Courses.English.Vocabulary.Attitudinals.Util where
import Study.Courses.English.Vocabulary.Attitudinals.Model
import Util (chooseItemUniformly)
import Data.Maybe (catMaybes)
import System.Random (StdGen)
import qualified Data.Text as T
randomlyPickAttitudinalModifier :: StdGen
-> Attitudinal
-> (T.Text, T.Text, StdGen)
randomlyPickAttitudinalModifier :: StdGen -> Attitudinal -> (Text, Text, StdGen)
randomlyPickAttitudinalModifier StdGen
r0 Attitudinal
attitudinal = (Text
attitudinalModifier, Text
meaningOfModifierAttitudinal, StdGen
r1) where
(Text
meaningOfModifierAttitudinal, StdGen
r1) = StdGen -> Attitudinal -> (Text, StdGen)
randomlyPickAttitudinalMeaning StdGen
r0 Attitudinal
attitudinal
modifiedAttitudinalExpression :: Text
modifiedAttitudinalExpression = (Attitudinal -> Text
attitudinalWord Attitudinal
attitudinal) Text -> Text -> Text
`T.append` Text
attitudinalModifier
attitudinalModifier :: Text
attitudinalModifier
| (Text -> Maybe Text
forall a. a -> Maybe a
Just Text
meaningOfModifierAttitudinal) Maybe Text -> Maybe Text -> Bool
forall a. Eq a => a -> a -> Bool
== (Attitudinal -> Maybe Text
attitudinalNeutralMeaning Attitudinal
attitudinal) = Text
"cu'i"
| (Text -> Maybe Text
forall a. a -> Maybe a
Just Text
meaningOfModifierAttitudinal) Maybe Text -> Maybe Text -> Bool
forall a. Eq a => a -> a -> Bool
== (Attitudinal -> Maybe Text
attitudinalNegativeMeaning Attitudinal
attitudinal) =Text
"nai"
| Bool
otherwise = Text
""
randomlyPickAttitudinalMeaning :: StdGen -> Attitudinal -> (T.Text, StdGen)
randomlyPickAttitudinalMeaning :: StdGen -> Attitudinal -> (Text, StdGen)
randomlyPickAttitudinalMeaning StdGen
r0 Attitudinal
attitudinal = StdGen -> [Text] -> (Text, StdGen)
forall a. StdGen -> [a] -> (a, StdGen)
chooseItemUniformly StdGen
r0 ([Text] -> (Text, StdGen)) -> [Text] -> (Text, StdGen)
forall a b. (a -> b) -> a -> b
$ [Maybe Text] -> [Text]
forall a. [Maybe a] -> [a]
catMaybes [Text -> Maybe Text
forall a. a -> Maybe a
Just (Text -> Maybe Text) -> Text -> Maybe Text
forall a b. (a -> b) -> a -> b
$ Attitudinal -> Text
attitudinalPositiveMeaning Attitudinal
attitudinal, Attitudinal -> Maybe Text
attitudinalNeutralMeaning Attitudinal
attitudinal, Attitudinal -> Maybe Text
attitudinalNegativeMeaning Attitudinal
attitudinal]