{-|
Module      : $Header$
Description : A collection of all modules useful for using marvin.
Copyright   : (c) Justus Adam, 2016
License     : BSD3
Maintainer  : dev@justus.science
Stability   : experimental
Portability : POSIX
-}
module Marvin.Prelude
    (
    -- ** Common functions and Types for scripts
      module Marvin
    -- ** Mutable references in marvin scripts
    , module Marvin.Util.Mutable
    -- ** Logging in Scripts
    , module Control.Monad.Logger
    -- ** Random numbers and convenience functions
    , module Marvin.Util.Random
    -- ** Marvins regex type and how to work with it
    , module Marvin.Util.Regex
    -- ** Dealing with JSON
    , module Marvin.Util.JSON
    -- ** Interpolated strings a la Scala and CoffeeScript
    , isL, isT, isS
    -- ** Arbitrary IO in scripts
    , MonadIO, liftIO
    -- ** Useful functions not in the normal Prelude
    , when, unless, for, for_, fromMaybe
    ) where

import           Control.Monad                (unless, when)
import           Control.Monad.IO.Class       (MonadIO, liftIO)
import           Control.Monad.Logger
import           Data.Foldable                (for_)
import           Data.Maybe                   (fromMaybe)
import           Data.Traversable             (for)
import           Marvin
import           Marvin.Interpolate.String    (isS)
import           Marvin.Interpolate.Text      (isT)
import           Marvin.Interpolate.Text.Lazy (isL)
import           Marvin.Util.JSON
import           Marvin.Util.Mutable
import           Marvin.Util.Random
import           Marvin.Util.Regex