output-blocks-0.5.0.1
Safe HaskellNone
LanguageHaskell2010

Control.OutputCapable.Blocks.Generic.Type

Description

Provides an Algebraic Data Type to represent GenericOutput. This can be useful in cases where the raw representation needs to be persisted or for converting the type of GenericOutputCapable.

Synopsis

Documentation

data GenericOutput language element Source #

Data type miming the OutputCapable class interface. Can be used to Prototype without defining additional instances. The result can be converted into any member of the class.

Constructors

YesNo Bool [GenericOutput language element]

output condition check, but continue afterwards

Image FilePath

a single image

Images (Map String FilePath)

multiple images with a text tag that is to be printed (e.g. a number)

Paragraph [GenericOutput language element]

to group (and separate) output

Enumerated [([GenericOutput language element], [GenericOutput language element])]

an enumeration with the enumerator first and content second

Itemized [[GenericOutput language element]]

like enumeration (but without enumerator)

Indented [GenericOutput language element]

for indenting output

Latex String

latex code (for formulas and text blocks only)

Folded Bool (Map language String) [GenericOutput language element]

minimisable output with default open-state, title and content

Code (Map language String)

to output as text with fixed width, providing translations

Translated (Map language String)

normal text with translations

Special element

allows abbreviating several complex parts which have special rendering functions which are not easily representable as ADT

Instances

Instances details
(Bounded language, Enum language, Monad m, Ord language) => GenericOutputCapable language (GenericReportT language (GenericOutput language element) m) Source #

OutputCapable instances for GenericOutput, allowing for free conversion between ADT and interface.

Instance details

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 #

Foldable (GenericOutput language) Source # 
Instance details

Defined in Control.OutputCapable.Blocks.Generic.Type

Methods

fold :: Monoid m => GenericOutput language m -> m #

foldMap :: Monoid m => (a -> m) -> GenericOutput language a -> m #

foldMap' :: Monoid m => (a -> m) -> GenericOutput language a -> m #

foldr :: (a -> b -> b) -> b -> GenericOutput language a -> b #

foldr' :: (a -> b -> b) -> b -> GenericOutput language a -> b #

foldl :: (b -> a -> b) -> b -> GenericOutput language a -> b #

foldl' :: (b -> a -> b) -> b -> GenericOutput language a -> b #

foldr1 :: (a -> a -> a) -> GenericOutput language a -> a #

foldl1 :: (a -> a -> a) -> GenericOutput language a -> a #

toList :: GenericOutput language a -> [a] #

null :: GenericOutput language a -> Bool #

length :: GenericOutput language a -> Int #

elem :: Eq a => a -> GenericOutput language a -> Bool #

maximum :: Ord a => GenericOutput language a -> a #

minimum :: Ord a => GenericOutput language a -> a #

sum :: Num a => GenericOutput language a -> a #

product :: Num a => GenericOutput language a -> a #

Functor (GenericOutput language) Source # 
Instance details

Defined in Control.OutputCapable.Blocks.Generic.Type

Methods

fmap :: (a -> b) -> GenericOutput language a -> GenericOutput language b #

(<$) :: a -> GenericOutput language b -> GenericOutput language a #

(Ord language, Data language, Data element) => Data (GenericOutput language element) Source # 
Instance details

Defined in Control.OutputCapable.Blocks.Generic.Type

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> GenericOutput language element -> c (GenericOutput language element) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (GenericOutput language element) #

toConstr :: GenericOutput language element -> Constr #

dataTypeOf :: GenericOutput language element -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (GenericOutput language element)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (GenericOutput language element)) #

gmapT :: (forall b. Data b => b -> b) -> GenericOutput language element -> GenericOutput language element #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> GenericOutput language element -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> GenericOutput language element -> r #

gmapQ :: (forall d. Data d => d -> u) -> GenericOutput language element -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> GenericOutput language element -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> GenericOutput language element -> m (GenericOutput language element) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> GenericOutput language element -> m (GenericOutput language element) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> GenericOutput language element -> m (GenericOutput language element) #

Generic (GenericOutput language element) Source # 
Instance details

Defined in Control.OutputCapable.Blocks.Generic.Type

Associated Types

type Rep (GenericOutput language element) 
Instance details

Defined in Control.OutputCapable.Blocks.Generic.Type

type Rep (GenericOutput language element) = D1 ('MetaData "GenericOutput" "Control.OutputCapable.Blocks.Generic.Type" "output-blocks-0.5.0.1-29ym9H8IG24SCC0fBh18M" 'False) (((C1 ('MetaCons "YesNo" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GenericOutput language element])) :+: (C1 ('MetaCons "Image" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath)) :+: C1 ('MetaCons "Images" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map String FilePath))))) :+: (C1 ('MetaCons "Paragraph" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GenericOutput language element])) :+: (C1 ('MetaCons "Enumerated" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [([GenericOutput language element], [GenericOutput language element])])) :+: C1 ('MetaCons "Itemized" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [[GenericOutput language element]]))))) :+: ((C1 ('MetaCons "Indented" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GenericOutput language element])) :+: (C1 ('MetaCons "Latex" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :+: C1 ('MetaCons "Folded" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map language String)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GenericOutput language element]))))) :+: (C1 ('MetaCons "Code" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map language String))) :+: (C1 ('MetaCons "Translated" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map language String))) :+: C1 ('MetaCons "Special" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 element))))))

Methods

from :: GenericOutput language element -> Rep (GenericOutput language element) x #

to :: Rep (GenericOutput language element) x -> GenericOutput language element #

(Ord language, Read language, Read element) => Read (GenericOutput language element) Source # 
Instance details

Defined in Control.OutputCapable.Blocks.Generic.Type

Methods

readsPrec :: Int -> ReadS (GenericOutput language element) #

readList :: ReadS [GenericOutput language element] #

readPrec :: ReadPrec (GenericOutput language element) #

readListPrec :: ReadPrec [GenericOutput language element] #

(Show language, Show element) => Show (GenericOutput language element) Source # 
Instance details

Defined in Control.OutputCapable.Blocks.Generic.Type

Methods

showsPrec :: Int -> GenericOutput language element -> ShowS #

show :: GenericOutput language element -> String #

showList :: [GenericOutput language element] -> ShowS #

(Eq language, Eq element) => Eq (GenericOutput language element) Source # 
Instance details

Defined in Control.OutputCapable.Blocks.Generic.Type

Methods

(==) :: GenericOutput language element -> GenericOutput language element -> Bool #

(/=) :: GenericOutput language element -> GenericOutput language element -> Bool #

type Rep (GenericOutput language element) Source # 
Instance details

Defined in Control.OutputCapable.Blocks.Generic.Type

type Rep (GenericOutput language element) = D1 ('MetaData "GenericOutput" "Control.OutputCapable.Blocks.Generic.Type" "output-blocks-0.5.0.1-29ym9H8IG24SCC0fBh18M" 'False) (((C1 ('MetaCons "YesNo" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GenericOutput language element])) :+: (C1 ('MetaCons "Image" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath)) :+: C1 ('MetaCons "Images" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map String FilePath))))) :+: (C1 ('MetaCons "Paragraph" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GenericOutput language element])) :+: (C1 ('MetaCons "Enumerated" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [([GenericOutput language element], [GenericOutput language element])])) :+: C1 ('MetaCons "Itemized" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [[GenericOutput language element]]))))) :+: ((C1 ('MetaCons "Indented" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GenericOutput language element])) :+: (C1 ('MetaCons "Latex" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :+: C1 ('MetaCons "Folded" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map language String)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GenericOutput language element]))))) :+: (C1 ('MetaCons "Code" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map language String))) :+: (C1 ('MetaCons "Translated" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map language String))) :+: C1 ('MetaCons "Special" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 element))))))

foldMapOutputBy :: (a -> a -> a) -> (GenericOutput language element -> a) -> GenericOutput language element -> a Source #

A right fold with the possibility to inspect every node.

@since: 0.4

getOutputSequence :: Functor m => language -> GenericLangM language (GenericReportT language (GenericOutput language element) m) () -> m [GenericOutput language element] Source #

Converts non graded GenericOutputCapable value using GenericOutput into a list of GenericOutput

getOutputSequenceWithResult :: Functor m => language -> GenericLangM language (GenericReportT language (GenericOutput language element) m) a -> m (Maybe a, [GenericOutput language element]) Source #

Converts GenericOutputCapable value using GenericOutput into a result and a list of GenericOutput

Consider using getOutputSequenceWithRating or even more specific versions of Type in order to get better error messages on implementation errors.

getOutputSequenceWithRating :: Functor m => language -> GenericLangM language (GenericReportT language (GenericOutput language element) m) Rational -> m (Maybe Rational, [GenericOutput language element]) Source #

More concretely typed alias of getOutputSequenceWithResult

Converts graded GenericOutputCapable value using GenericOutput into a rating and a list of GenericOutput

inspectTranslations :: (element -> a) -> (Map language String -> a) -> (a -> a -> a) -> a -> GenericOutput language element -> a Source #

Inspects translations provided the given inspect and combining functions.

@since: 0.3.0.1

toOutputCapable :: forall language (m :: Type -> Type) element. GenericOutputCapable language m => (element -> GenericLangM language m ()) -> (Bool -> GenericLangM language m () -> GenericLangM language m ()) -> [GenericOutput language element] -> GenericLangM language m () Source #

Convert a list of GenericOutput into any member of GenericOutputCapable