module Modelling.CdOd.Phrasing.Common (
PhrasingStrings (..),
phraseChangeWith
) where
import Modelling.Types (
Change (..),
)
import Modelling.CdOd.Types (
AnyRelationship,
NonInheritancePhrasing (..),
OmittedDefaultMultiplicities (..),
PhrasingKind (..),
toPhrasing,
)
import Control.OutputCapable.Blocks (ArticleToUse (..))
data PhrasingStrings = PhrasingStrings
{ PhrasingStrings -> String
changeNothing :: String
, PhrasingStrings -> String
addPrefix :: String
, PhrasingStrings -> String
removePrefix :: String
, PhrasingStrings -> String
replacePrefix :: String
, PhrasingStrings -> String
byInfix :: String
, PhrasingStrings -> String -> String
postProcess :: String -> String
, PhrasingStrings
-> OmittedDefaultMultiplicities
-> ArticleToUse
-> PhrasingKind
-> NonInheritancePhrasing
-> AnyRelationship String String
-> String
phraseRelationWith :: OmittedDefaultMultiplicities
-> ArticleToUse
-> PhrasingKind
-> NonInheritancePhrasing
-> AnyRelationship String String
-> String
}
phraseChangeWith
:: PhrasingStrings
-> OmittedDefaultMultiplicities
-> ArticleToUse
-> Bool
-> Bool
-> Change (AnyRelationship String String)
-> String
phraseChangeWith :: PhrasingStrings
-> OmittedDefaultMultiplicities
-> ArticleToUse
-> Bool
-> Bool
-> Change (AnyRelationship String String)
-> String
phraseChangeWith PhrasingStrings
strings OmittedDefaultMultiplicities
defaultMultiplicities ArticleToUse
article Bool
byName Bool
withDir Change (AnyRelationship String String)
c =
case (Change (AnyRelationship String String)
-> Maybe (AnyRelationship String String)
forall a. Change a -> Maybe a
add Change (AnyRelationship String String)
c, Change (AnyRelationship String String)
-> Maybe (AnyRelationship String String)
forall a. Change a -> Maybe a
remove Change (AnyRelationship String String)
c) of
(Maybe (AnyRelationship String String)
Nothing, Maybe (AnyRelationship String String)
Nothing) -> PhrasingStrings -> String
changeNothing PhrasingStrings
strings
(Just AnyRelationship String String
e, Maybe (AnyRelationship String String)
Nothing) -> PhrasingStrings -> String
addPrefix PhrasingStrings
strings String -> String -> String
forall a. [a] -> [a] -> [a]
++ PhrasingStrings -> String -> String
postProcess PhrasingStrings
strings (AnyRelationship String String -> String
phrasingNew AnyRelationship String String
e)
(Maybe (AnyRelationship String String)
Nothing, Just AnyRelationship String String
e ) -> PhrasingStrings -> String
removePrefix PhrasingStrings
strings String -> String -> String
forall a. [a] -> [a] -> [a]
++ AnyRelationship String String -> String
phrasingOld AnyRelationship String String
e
(Just AnyRelationship String String
e1, Just AnyRelationship String String
e2) ->
PhrasingStrings -> String
replacePrefix PhrasingStrings
strings String -> String -> String
forall a. [a] -> [a] -> [a]
++ PhrasingStrings -> String -> String
postProcess PhrasingStrings
strings (AnyRelationship String String -> String
phrasingOld AnyRelationship String String
e2)
String -> String -> String
forall a. [a] -> [a] -> [a]
++ PhrasingStrings -> String
byInfix PhrasingStrings
strings String -> String -> String
forall a. [a] -> [a] -> [a]
++ AnyRelationship String String -> String
phrasingNew AnyRelationship String String
e1
where
phrasingOld :: AnyRelationship String String -> String
phrasingOld = PhrasingStrings
-> OmittedDefaultMultiplicities
-> ArticleToUse
-> PhrasingKind
-> NonInheritancePhrasing
-> AnyRelationship String String
-> String
phraseRelationWith PhrasingStrings
strings
OmittedDefaultMultiplicities
defaultMultiplicities
ArticleToUse
article
PhrasingKind
Denoted
(NonInheritancePhrasing -> AnyRelationship String String -> String)
-> NonInheritancePhrasing
-> AnyRelationship String String
-> String
forall a b. (a -> b) -> a -> b
$ Bool -> Bool -> NonInheritancePhrasing
toPhrasing Bool
byName Bool
withDir
phrasingNew :: AnyRelationship String String -> String
phrasingNew = PhrasingStrings
-> OmittedDefaultMultiplicities
-> ArticleToUse
-> PhrasingKind
-> NonInheritancePhrasing
-> AnyRelationship String String
-> String
phraseRelationWith PhrasingStrings
strings
OmittedDefaultMultiplicities
defaultMultiplicities
ArticleToUse
IndefiniteArticle
PhrasingKind
Participations
(NonInheritancePhrasing -> AnyRelationship String String -> String)
-> NonInheritancePhrasing
-> AnyRelationship String String
-> String
forall a b. (a -> b) -> a -> b
$ Bool -> Bool -> NonInheritancePhrasing
toPhrasing Bool
False Bool
withDir