-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Simple enum that encodes application verbosity.
--   
--   Simple enum that encodes application verbosity with various useful
--   instances.
@package verbosity
@version 0.2.3.0


-- | Simple enum that encodes application <a>Verbosity</a>.
module Data.Verbosity

-- | Ordering:
--   
--   <pre>
--   <a>Silent</a> &lt; <a>Normal</a> &lt; <a>Verbose</a> &lt; <a>Annoying</a>
--   </pre>
--   
--   Bounds:
--   
--   <pre>
--   <a>minBound</a> = <a>Silent</a>; <a>maxBound</a> = <a>Annoying</a>
--   </pre>
--   
--   Enum:
--   
--   <pre>
--   map <a>fromEnum</a> [<a>Silent</a> .. <a>Annoying</a>] = [0, 1, 2, 3]
--   </pre>
data Verbosity

-- | Don't print any messages.
Silent :: Verbosity

-- | Print only important messages. (default)
Normal :: Verbosity

-- | Print anything that comes in to mind.
Verbose :: Verbosity

-- | Print debugging/tracing information.
Annoying :: Verbosity

-- | Increment verbosity level. Return <a>Nothing</a> if trying to icrement
--   beyond <a>maxBound</a>.
increment :: Verbosity -> Maybe Verbosity

-- | Variant of <a>increment</a> that doesn't fail when <a>maxBound</a> is
--   reached. It is defined as:
--   
--   <pre>
--   <a>increment'</a> v = <a>fromMaybe</a> v (<a>increment</a> v)
--   </pre>
increment' :: Verbosity -> Verbosity

-- | Safe version of <a>toEnum</a> specialized to <a>Verbosity</a>.
fromInt :: Int -> Maybe Verbosity

-- | Generic <a>Verbosity</a> parsing function.
--   
--   Use <a>case-insensitive</a> package to make this function case
--   insensitive:
--   
--   <pre>
--   ghci&gt; import Data.Verbosity as Verbosity
--   ghci&gt; import qualified Data.CaseInsensitive as CI (mk)
--   ghci&gt; Verbosity.parse (CI.mk "silent")
--   Just Silent
--   </pre>
parse :: (Eq string, IsString string) => string -> Maybe Verbosity
instance Data.Data.Data Data.Verbosity.Verbosity
instance GHC.Generics.Generic Data.Verbosity.Verbosity
instance GHC.Show.Show Data.Verbosity.Verbosity
instance GHC.Read.Read Data.Verbosity.Verbosity
instance GHC.Classes.Ord Data.Verbosity.Verbosity
instance GHC.Classes.Eq Data.Verbosity.Verbosity
instance GHC.Enum.Enum Data.Verbosity.Verbosity
instance GHC.Enum.Bounded Data.Verbosity.Verbosity
instance Data.Default.Class.Default Data.Verbosity.Verbosity
instance Data.Binary.Class.Binary Data.Verbosity.Verbosity
instance Control.DeepSeq.NFData Data.Verbosity.Verbosity


-- | Type class for accessing <a>Verbosity</a>.
module Data.Verbosity.Class
class HasVerbosity s

-- | Lens for accessing <a>Verbosity</a> embedded in the type <tt>s</tt>.
verbosity :: (HasVerbosity s, Functor f) => (Verbosity -> f Verbosity) -> s -> f s

-- | Specialization of <a>verbosity</a> lens in to getter function.
getVerbosity :: HasVerbosity s => s -> Verbosity

-- | Specialization of <a>verbosity</a> lens in to setter function.
setVerbosity :: HasVerbosity s => Verbosity -> s -> s

-- | Specialization of <a>verbosity</a> lens in to modification function.
modifyVerbosity :: HasVerbosity s => (Verbosity -> Verbosity) -> s -> s
instance Data.Verbosity.Class.HasVerbosity Data.Verbosity.Verbosity
