-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Framework for rendering things with metadata/headers and values
--
-- Please see README.md
@package glaze
@version 0.2.0.2
-- | Framework for rendering things (or list of things, or things that
-- contain things) that have metadata/header information as well as
-- values.
module Glaze
-- | 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
-- glaze with meta information.
data Glaze a r
Glaze :: r -> (a -> r) -> Glaze a r
[glazeRenderedMeta] :: Glaze a r -> r
[glazeValueRenderer] :: Glaze a r -> a -> r
class HasRenderedMeta s a | s -> a
renderedMeta :: HasRenderedMeta s a => Lens' s a
class HasValueRenderer s a | s -> a
valueRenderer :: HasValueRenderer s a => Lens' s a
-- | Given a wrapping function for the meta and renderer value, and Glaze
-- instructions for a, run them all together.
renderWith :: (r -> r -> b) -> Glaze a r -> a -> b
-- | Lifts glazing function into an Applicative
glazeA :: (Traversable t, Applicative m) => (wrapper -> meta -> t rs -> r) -> m wrapper -> m meta -> t (m rs) -> m r
-- | 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,
-- transform it to a Glaze for a list of as.
glazeList :: ([row] -> r, [field] -> row, [field] -> row) -> r -> [Glaze a field] -> Glaze [a] r
-- | Applicative version of glazeList
glazeListA :: Applicative f => f ([row] -> r, [field] -> row, [field] -> row) -> f r -> [f (Glaze a field)] -> f (Glaze [a] r)
-- | 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, 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
glazeFields :: ([(b, b)] -> r) -> r -> [Glaze a b] -> Glaze a r
-- | Applicative versino of glazeFields
glazeFieldsA :: Applicative f => f ([(b, b)] -> r) -> f r -> [f (Glaze a b)] -> f (Glaze a r)
-- | Makes a glaze of the type of a larger component, but only using the
-- information of a smaller component. Given a factory function that can
-- create glazes from Proxy a and a Lens into subcomponent a, create the
-- glaze of the type of the larger component.
reglaze :: (Proxy a -> Glaze a r) -> Getter s a -> Glaze s r
-- | Applicative version of reglaze
reglazeA :: Applicative f => (Proxy a -> f (Glaze a r)) -> Getter s a -> f (Glaze s r)
instance GHC.Base.Functor (Glaze.Glaze a)
instance Glaze.HasRenderedMeta (Glaze.Glaze a r) r
instance Glaze.HasValueRenderer (Glaze.Glaze a r) (a -> r)
instance GHC.Base.Applicative (Glaze.Glaze a)