Safe Haskell | None |
---|---|
Language | Haskell2010 |
Control.OutputCapable.Blocks.Generic
Description
This module provides common skeletons for creating multilingual output. Provided interfaces can be used to generate simultaneous multilingual output as well as output which can be rendered in different Languages (when the specific Language is provided)
Synopsis
- class (forall (g :: Type -> Type). Functor g => Functor (t g)) => FunctorTrans (t :: (Type -> Type) -> Type -> Type) where
- newtype GenericLangM l (m :: Type -> Type) a = LangM {
- unLangM :: m a
- newtype GenericReportT l o (m :: Type -> Type) r = Report {
- unReport :: MaybeT (WriterT [GenericOut l o] m) r
- class (Applicative m, Ord l) => GenericOutputCapable l (m :: Type -> Type) where
- assertion :: Bool -> GenericLangM l m () -> GenericLangM l m ()
- image :: FilePath -> GenericLangM l m ()
- images :: (k -> String) -> (a -> FilePath) -> Map k a -> GenericLangM l m ()
- paragraph :: GenericLangM l m () -> GenericLangM l m ()
- refuse :: GenericLangM l m () -> GenericLangM l m ()
- text :: String -> GenericLangM l m ()
- enumerateM :: (a -> GenericLangM l m ()) -> [(a, GenericLangM l m ())] -> GenericLangM l m ()
- itemizeM :: [GenericLangM l m ()] -> GenericLangM l m ()
- indent :: GenericLangM l m () -> GenericLangM l m ()
- latex :: String -> GenericLangM l m ()
- folded :: Bool -> (l -> String) -> GenericLangM l m () -> GenericLangM l m ()
- code :: String -> GenericLangM l m ()
- translatedCode :: (l -> String) -> GenericLangM l m ()
- translated :: (l -> String) -> GenericLangM l m ()
- class (GenericOutputCapable l m, Monad (RunMonad l m)) => RunnableOutputCapable l (m :: Type -> Type) where
- abortWith :: forall (m :: Type -> Type) o l. Monad m => o -> GenericLangM l (GenericReportT l o m) ()
- alignOutput :: forall (m :: Type -> Type) o l a. Monad m => ([o] -> o) -> GenericLangM l (GenericReportT l o m) a -> GenericLangM l (GenericReportT l o m) ()
- combineReports :: forall (m :: Type -> Type) o l a. Monad m => ([[o]] -> o) -> [GenericLangM l (GenericReportT l o m) a] -> GenericLangM l (GenericReportT l o m) ()
- combineTwoReports :: forall (m :: Type -> Type) o l a b. Monad m => ([o] -> [o] -> o) -> GenericLangM l (GenericReportT l o m) a -> GenericLangM l (GenericReportT l o m) b -> GenericLangM l (GenericReportT l o m) ()
- format :: forall (m :: Type -> Type) o l. Monad m => o -> GenericLangM l (GenericReportT l o m) ()
- recoverFrom :: forall (m :: Type -> Type) l. Alternative m => GenericLangM l m () -> GenericLangM l m ()
- recoverWith :: forall (m :: Type -> Type) a l b. Alternative m => a -> GenericLangM l m b -> GenericLangM l m (Either a b)
- toAbort :: forall (m :: Type -> Type) l o a b. Monad m => GenericLangM l (GenericReportT l o m) a -> GenericLangM l (GenericReportT l o m) b
- mapLangM :: (m a -> m b) -> GenericLangM l m a -> GenericLangM l m b
- ($=<<) :: Monad m => (a -> GenericLangM l m b) -> m a -> GenericLangM l m b
- ($>>) :: forall (m :: Type -> Type) l a b. Monad m => GenericLangM l m a -> GenericLangM l m b -> GenericLangM l m b
- ($>>=) :: forall (m :: Type -> Type) l a b. Monad m => GenericLangM l m a -> (a -> GenericLangM l m b) -> GenericLangM l m b
- collapsed :: forall language (m :: Type -> Type) a1. GenericOutputCapable language m => Bool -> State (Map language String) a1 -> GenericLangM language m () -> GenericLangM language m ()
- evalLangM :: forall l (m :: Type -> Type) a. RunnableOutputCapable l m => GenericLangM l m a -> RunMonad l m (Maybe a)
- execLangM :: forall l (m :: Type -> Type) a. RunnableOutputCapable l m => GenericLangM l m a -> RunMonad l m (l -> Output l m)
- runLangMReport :: Functor m => o -> (o -> o -> o) -> GenericLangM l (GenericReportT l o m) a -> m (Maybe a, l -> o)
- runLangMReportMultiLang :: Functor m => o -> (o -> o -> o) -> ((l -> o) -> o) -> GenericLangM l (GenericReportT l o m) a -> m (Maybe a, o)
- translate :: forall language (m :: Type -> Type) a. GenericOutputCapable language m => State (Map language String) a -> GenericLangM language m ()
- translateCode :: forall language (m :: Type -> Type) a. GenericOutputCapable language m => State (Map language String) a -> GenericLangM language m ()
- translations :: State (Map language a1) a2 -> Map language a1
- withLang :: forall l (m :: Type -> Type) b a. (RunnableOutputCapable l m, Output l m ~ RunMonad l m b) => GenericLangM l m a -> l -> RunMonad l m (Maybe a)
Documentation
class (forall (g :: Type -> Type). Functor g => Functor (t g)) => FunctorTrans (t :: (Type -> Type) -> Type -> Type) where Source #
The class of functor transformers.
Lifting a functor to the stacked functor.
Methods
lift :: Functor f => f a -> t f a Source #
Lift a computation from the argument functor to the constructed functor.
Instances
FunctorTrans (GenericLangM l) Source # | |
Defined in Control.OutputCapable.Blocks.Generic Methods lift :: Functor f => f a -> GenericLangM l f a Source # |
Monad for translations
newtype GenericLangM l (m :: Type -> Type) a Source #
Instances
FunctorTrans (GenericLangM l) Source # | |
Defined in Control.OutputCapable.Blocks.Generic Methods lift :: Functor f => f a -> GenericLangM l f a Source # | |
Applicative m => Applicative (GenericLangM l m) Source # | |
Defined in Control.OutputCapable.Blocks.Generic Methods pure :: a -> GenericLangM l m a # (<*>) :: GenericLangM l m (a -> b) -> GenericLangM l m a -> GenericLangM l m b # liftA2 :: (a -> b -> c) -> GenericLangM l m a -> GenericLangM l m b -> GenericLangM l m c # (*>) :: GenericLangM l m a -> GenericLangM l m b -> GenericLangM l m b # (<*) :: GenericLangM l m a -> GenericLangM l m b -> GenericLangM l m a # | |
Functor m => Functor (GenericLangM l m) Source # | |
Defined in Control.OutputCapable.Blocks.Generic Methods fmap :: (a -> b) -> GenericLangM l m a -> GenericLangM l m b # (<$) :: a -> GenericLangM l m b -> GenericLangM l m a # |
newtype GenericReportT l o (m :: Type -> Type) r Source #
Constructors
Report | |
Fields
|
Instances
Output monad
class (Applicative m, Ord l) => GenericOutputCapable l (m :: Type -> Type) where Source #
Minimal complete definition
assertion, image, images, paragraph, refuse, enumerateM, itemizeM, indent, latex, folded, translatedCode, translated
Methods
assertion :: Bool -> GenericLangM l m () -> GenericLangM l m () Source #
for assertions, i.e. expected behaviour is explanation
(and abortion on False
)
image :: FilePath -> GenericLangM l m () Source #
for printing a single image from file
images :: (k -> String) -> (a -> FilePath) -> Map k a -> GenericLangM l m () Source #
for printing multiple images using the given map
paragraph :: GenericLangM l m () -> GenericLangM l m () Source #
for a complete paragraph
refuse :: GenericLangM l m () -> GenericLangM l m () Source #
should abort at once
text :: String -> GenericLangM l m () Source #
for displaying text
enumerateM :: (a -> GenericLangM l m ()) -> [(a, GenericLangM l m ())] -> GenericLangM l m () Source #
for an enumerated sequence of elements
itemizeM :: [GenericLangM l m ()] -> GenericLangM l m () Source #
for an unenumerated sequence of elements
indent :: GenericLangM l m () -> GenericLangM l m () Source #
for indentation
latex :: String -> GenericLangM l m () Source #
for LaTeX-Math code (i.e. without surrounding $
)
folded :: Bool -> (l -> String) -> GenericLangM l m () -> GenericLangM l m () Source #
for minimisable output with a default state (open/closed) and title
code :: String -> GenericLangM l m () Source #
for fixed width fonts (i.e. typewriter style)
translatedCode :: (l -> String) -> GenericLangM l m () Source #
same as code
, but with different translations
translated :: (l -> String) -> GenericLangM l m () Source #
for displaying text with translations
Instances
Ord l => GenericOutputCapable l Maybe Source # | |
Defined in Control.OutputCapable.Blocks.Generic Methods assertion :: Bool -> GenericLangM l Maybe () -> GenericLangM l Maybe () Source # image :: FilePath -> GenericLangM l Maybe () Source # images :: (k -> String) -> (a -> FilePath) -> Map k a -> GenericLangM l Maybe () Source # paragraph :: GenericLangM l Maybe () -> GenericLangM l Maybe () Source # refuse :: GenericLangM l Maybe () -> GenericLangM l Maybe () Source # text :: String -> GenericLangM l Maybe () Source # enumerateM :: (a -> GenericLangM l Maybe ()) -> [(a, GenericLangM l Maybe ())] -> GenericLangM l Maybe () Source # itemizeM :: [GenericLangM l Maybe ()] -> GenericLangM l Maybe () Source # indent :: GenericLangM l Maybe () -> GenericLangM l Maybe () Source # latex :: String -> GenericLangM l Maybe () Source # folded :: Bool -> (l -> String) -> GenericLangM l Maybe () -> GenericLangM l Maybe () Source # code :: String -> GenericLangM l Maybe () Source # translatedCode :: (l -> String) -> GenericLangM l Maybe () Source # translated :: (l -> String) -> GenericLangM l Maybe () Source # | |
l ~ Language => GenericOutputCapable l (GenericReportT l (IO ()) IO) Source # | |
Defined in Control.OutputCapable.Blocks Methods assertion :: Bool -> GenericLangM l (GenericReportT l (IO ()) IO) () -> GenericLangM l (GenericReportT l (IO ()) IO) () Source # image :: FilePath -> GenericLangM l (GenericReportT l (IO ()) IO) () Source # images :: (k -> String) -> (a -> FilePath) -> Map k a -> GenericLangM l (GenericReportT l (IO ()) IO) () Source # paragraph :: GenericLangM l (GenericReportT l (IO ()) IO) () -> GenericLangM l (GenericReportT l (IO ()) IO) () Source # refuse :: GenericLangM l (GenericReportT l (IO ()) IO) () -> GenericLangM l (GenericReportT l (IO ()) IO) () Source # text :: String -> GenericLangM l (GenericReportT l (IO ()) IO) () Source # enumerateM :: (a -> GenericLangM l (GenericReportT l (IO ()) IO) ()) -> [(a, GenericLangM l (GenericReportT l (IO ()) IO) ())] -> GenericLangM l (GenericReportT l (IO ()) IO) () Source # itemizeM :: [GenericLangM l (GenericReportT l (IO ()) IO) ()] -> GenericLangM l (GenericReportT l (IO ()) IO) () Source # indent :: GenericLangM l (GenericReportT l (IO ()) IO) () -> GenericLangM l (GenericReportT l (IO ()) IO) () Source # latex :: String -> GenericLangM l (GenericReportT l (IO ()) IO) () Source # folded :: Bool -> (l -> String) -> GenericLangM l (GenericReportT l (IO ()) IO) () -> GenericLangM l (GenericReportT l (IO ()) IO) () Source # code :: String -> GenericLangM l (GenericReportT l (IO ()) IO) () Source # translatedCode :: (l -> String) -> GenericLangM l (GenericReportT l (IO ()) IO) () Source # translated :: (l -> String) -> GenericLangM l (GenericReportT l (IO ()) IO) () Source # | |
(Bounded language, Enum language, Monad m, Ord language) => GenericOutputCapable language (GenericReportT language (GenericOutput language element) m) Source # | OutputCapable instances for |
Defined in Control.OutputCapable.Blocks.Generic.Type Methods assertion :: Bool -> GenericLangM language (GenericReportT language (GenericOutput language element) m) () -> GenericLangM language (GenericReportT language (GenericOutput language element) m) () Source # image :: FilePath -> GenericLangM language (GenericReportT language (GenericOutput language element) m) () Source # images :: (k -> String) -> (a -> FilePath) -> Map k a -> GenericLangM language (GenericReportT language (GenericOutput language element) m) () Source # paragraph :: GenericLangM language (GenericReportT language (GenericOutput language element) m) () -> GenericLangM language (GenericReportT language (GenericOutput language element) m) () Source # refuse :: GenericLangM language (GenericReportT language (GenericOutput language element) m) () -> GenericLangM language (GenericReportT language (GenericOutput language element) m) () Source # text :: String -> GenericLangM language (GenericReportT language (GenericOutput language element) m) () Source # enumerateM :: (a -> GenericLangM language (GenericReportT language (GenericOutput language element) m) ()) -> [(a, GenericLangM language (GenericReportT language (GenericOutput language element) m) ())] -> GenericLangM language (GenericReportT language (GenericOutput language element) m) () Source # itemizeM :: [GenericLangM language (GenericReportT language (GenericOutput language element) m) ()] -> GenericLangM language (GenericReportT language (GenericOutput language element) m) () Source # indent :: GenericLangM language (GenericReportT language (GenericOutput language element) m) () -> GenericLangM language (GenericReportT language (GenericOutput language element) m) () Source # latex :: String -> GenericLangM language (GenericReportT language (GenericOutput language element) m) () Source # folded :: Bool -> (language -> String) -> GenericLangM language (GenericReportT language (GenericOutput language element) m) () -> GenericLangM language (GenericReportT language (GenericOutput language element) m) () Source # code :: String -> GenericLangM language (GenericReportT language (GenericOutput language element) m) () Source # translatedCode :: (language -> String) -> GenericLangM language (GenericReportT language (GenericOutput language element) m) () Source # translated :: (language -> String) -> GenericLangM language (GenericReportT language (GenericOutput language element) m) () Source # |
class (GenericOutputCapable l m, Monad (RunMonad l m)) => RunnableOutputCapable l (m :: Type -> Type) where Source #
Associated Types
type RunMonad l (m :: Type -> Type) :: Type -> Type Source #
the monad handling multilingual output
Instances
Ord l => RunnableOutputCapable l Maybe Source # | |||||||||
Defined in Control.OutputCapable.Blocks.Generic Associated Types
| |||||||||
l ~ Language => RunnableOutputCapable l (GenericReportT l (IO ()) IO) Source # | |||||||||
Defined in Control.OutputCapable.Blocks Associated Types
Methods runLangM :: GenericLangM l (GenericReportT l (IO ()) IO) a -> RunMonad l (GenericReportT l (IO ()) IO) (Maybe a, l -> Output l (GenericReportT l (IO ()) IO)) Source # |
abortWith :: forall (m :: Type -> Type) o l. Monad m => o -> GenericLangM l (GenericReportT l o m) () Source #
alignOutput :: forall (m :: Type -> Type) o l a. Monad m => ([o] -> o) -> GenericLangM l (GenericReportT l o m) a -> GenericLangM l (GenericReportT l o m) () Source #
combineReports :: forall (m :: Type -> Type) o l a. Monad m => ([[o]] -> o) -> [GenericLangM l (GenericReportT l o m) a] -> GenericLangM l (GenericReportT l o m) () Source #
Combines the output of the list of given reports using the provided function. Output is provided for all reports up to including the first failing report.
combineTwoReports :: forall (m :: Type -> Type) o l a b. Monad m => ([o] -> [o] -> o) -> GenericLangM l (GenericReportT l o m) a -> GenericLangM l (GenericReportT l o m) b -> GenericLangM l (GenericReportT l o m) () Source #
Combines the output of the two given reports using the provided functions.
If the execution aborts on the first report the second report is treated as if has not produced any output.
format :: forall (m :: Type -> Type) o l. Monad m => o -> GenericLangM l (GenericReportT l o m) () Source #
recoverFrom :: forall (m :: Type -> Type) l. Alternative m => GenericLangM l m () -> GenericLangM l m () Source #
recoverWith :: forall (m :: Type -> Type) a l b. Alternative m => a -> GenericLangM l m b -> GenericLangM l m (Either a b) Source #
toAbort :: forall (m :: Type -> Type) l o a b. Monad m => GenericLangM l (GenericReportT l o m) a -> GenericLangM l (GenericReportT l o m) b Source #
Translation
mapLangM :: (m a -> m b) -> GenericLangM l m a -> GenericLangM l m b Source #
Helper functions
($=<<) :: Monad m => (a -> GenericLangM l m b) -> m a -> GenericLangM l m b infixr 0 Source #
($>>) :: forall (m :: Type -> Type) l a b. Monad m => GenericLangM l m a -> GenericLangM l m b -> GenericLangM l m b infixr 0 Source #
($>>=) :: forall (m :: Type -> Type) l a b. Monad m => GenericLangM l m a -> (a -> GenericLangM l m b) -> GenericLangM l m b infixr 0 Source #
collapsed :: forall language (m :: Type -> Type) a1. GenericOutputCapable language m => Bool -> State (Map language String) a1 -> GenericLangM language m () -> GenericLangM language m () Source #
evalLangM :: forall l (m :: Type -> Type) a. RunnableOutputCapable l m => GenericLangM l m a -> RunMonad l m (Maybe a) Source #
execLangM :: forall l (m :: Type -> Type) a. RunnableOutputCapable l m => GenericLangM l m a -> RunMonad l m (l -> Output l m) Source #
runLangMReport :: Functor m => o -> (o -> o -> o) -> GenericLangM l (GenericReportT l o m) a -> m (Maybe a, l -> o) Source #
Provided a neutral element and a function to combine generated output
this function will evaluate GenericLangM
and combine the output.
A specific output can be rendered when a language is provided to the returned function.
runLangMReportMultiLang :: Functor m => o -> (o -> o -> o) -> ((l -> o) -> o) -> GenericLangM l (GenericReportT l o m) a -> m (Maybe a, o) Source #
Provided a neutral element, a function to combine generated output,
and a function to remap translations into output
this function will evaluate GenericLangM
and combine the output.
The provided output unifies multilingual output as one. This could for instance be with local definitions of translated parts.
translate :: forall language (m :: Type -> Type) a. GenericOutputCapable language m => State (Map language String) a -> GenericLangM language m () Source #
translateCode :: forall language (m :: Type -> Type) a. GenericOutputCapable language m => State (Map language String) a -> GenericLangM language m () Source #