Safe Haskell | None |
---|---|
Language | Haskell2010 |
Glaze
Description
Framework for rendering things (or list of things, or things that contain things) that have metadata/header information as well as values.
- data Glaze a r = Glaze {
- renderedMeta :: r
- valueRenderer :: a -> r
- unglazeWith :: (r -> r -> b) -> Glaze a r -> a -> b
- glazedA :: (Traversable t, Applicative m) => (wrapper -> meta -> t rs -> r) -> m wrapper -> m meta -> t (m rs) -> m r
- glazeList :: ([row] -> r, [field] -> row, [field] -> row) -> r -> [Glaze a field] -> Glaze [a] r
- glazeListA :: Applicative f => f ([row] -> r, [field] -> row, [field] -> row) -> f r -> [f (Glaze a field)] -> f (Glaze [a] r)
- glazeFields :: ([(b, b)] -> r) -> r -> [Glaze a b] -> Glaze a r
- glazeFieldsA :: Applicative f => f ([(b, b)] -> r) -> f r -> [f (Glaze a b)] -> f (Glaze a r)
- reglaze :: Glaze a r -> Getter s a -> Glaze s r
- reglazeA :: Applicative f => f (Glaze a r) -> Getter s a -> f (Glaze s r)
Documentation
Glaze is something that knows how to render some header information and given a value, how to render the value. Ie, the value has been glazeed with meta information.
Constructors
Glaze | |
Fields
|
unglazeWith :: (r -> r -> b) -> Glaze a r -> a -> b Source #
Given a wrapping function for the meta and renderer value, and Glaze instructions for a, run them all together.
glazedA :: (Traversable t, Applicative m) => (wrapper -> meta -> t rs -> r) -> m wrapper -> m meta -> t (m rs) -> m r Source #
Lifts glazing function into an Applicative
This is used to transform functions like glazeList
into glazeListA
glazeList :: ([row] -> r, [field] -> row, [field] -> row) -> r -> [Glaze a field] -> Glaze [a] r Source #
This can be used to make a Glaze for a list of things to render as a table.
Given (mainWrapper :: rows -> final render, headerRowWrapper:: fields -> header row, valueRowWrapper -> value row)
the rendered meta, and a list of Glaze a
columns to use, transform it to a Glaze for a list of as.
glazeListA :: Applicative f => f ([row] -> r, [field] -> row, [field] -> row) -> f r -> [f (Glaze a field)] -> f (Glaze [a] r) Source #
Applicative version of glazeList
glazeFields :: ([(b, b)] -> r) -> r -> [Glaze a b] -> Glaze a r Source #
This can be used to generate a Glaze for a larger supercomponent.
Given (wrapper :: list of (meta, rendered value) to final render)
the rendered meta, and a list of Glaze a
field to use, transform it to a Glaze for a single a.
In this case, use reglaze
to generate Glaze a
for each subcomponent to use as the list of Glaze a
glazeFieldsA :: Applicative f => f ([(b, b)] -> r) -> f r -> [f (Glaze a b)] -> f (Glaze a r) Source #
Applicative versino of glazeFields