-- 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)