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


-- | A softer alternative to Haddock
--   
--   Please see the website <a>https://theam.github.io/tintin</a>
@package tintin
@version 1.9.1

module Tintin.Domain
newtype DocumentationDirectory
DocumentationDirectory :: Text -> DocumentationDirectory
newtype OutputDirectory
OutputDirectory :: Text -> OutputDirectory

module Tintin.Core
type Effectful context result = ReaderT context IO result
type Pure context result = Reader context result
(|>) :: a -> (a -> b) -> b
(|$>) :: Functor f => f a -> (a -> b) -> f b
(|>>) :: Monad m => m a -> (a -> m b) -> m b
runEffects :: Effectful context result -> context -> IO result

module Tintin.Capabilities
liftCapability :: (LiftableWithCapability v, Has capability (Context v)) => (capability -> Execution v) -> v
instance Tintin.Capabilities.LiftableWithCapability (Control.Monad.Trans.Reader.ReaderT e GHC.Types.IO a)
instance Tintin.Capabilities.LiftableWithCapability v => Tintin.Capabilities.LiftableWithCapability (a -> v)

module Tintin.Capabilities.Process
data Process
data Capability
newtype CommandName
CommandName :: Text -> CommandName
newtype Arguments
Arguments :: [Text] -> Arguments
newtype StdOut
StdOut :: Text -> StdOut
newtype StdErr
StdErr :: Text -> StdErr
local :: Capability
read :: Has Capability eff => CommandName -> Arguments -> Effectful eff (Either StdErr StdOut)
call :: Has Capability eff => CommandName -> Effectful eff ()

module Tintin.Capabilities.Logging
data Logging

-- | Capability for our context to be able to log from any place where it
--   is available:
--   
--   <pre>
--   foo :: Has Logging.Capability e
--       =&gt; Effectful e ()
--   foo = do
--     log "Something happened :("
--     ...
--   </pre>
data Capability

-- | Logs a text message using the available logger
log :: Has Capability e => Text -> Effectful e ()

-- | Logs an error message using the available logger
err :: Has Capability e => Text -> Effectful e ()

-- | Logs a debug message using the available logger
debug :: Has Capability e => Text -> Effectful e ()

-- | Creates a logger that just prints things to STDOUT
stdOut :: Capability

-- | Creates a logger that does literally nothing
mute :: Capability

module Tintin.Capabilities.Filesystem
data Filesystem
data Capability
newtype Path
Path :: Text -> Path
newtype Extension
Extension :: Text -> Extension
local :: Capability
deleteIfExists :: Has Capability eff => Path -> Effectful eff ()
list :: Has Capability eff => Path -> Effectful eff [Path]
currentDirectory :: Has Capability eff => Effectful eff Path
readFile :: Has Capability eff => Path -> Effectful eff Text
makeDirectory :: Has Capability eff => Path -> Effectful eff ()
writeFile :: Has Capability eff => Path -> Text -> Effectful eff ()
doesExist :: Has Capability eff => Path -> Effectful eff Bool
getPathsWith :: Extension -> [Path] -> [Path]
instance GHC.Classes.Eq Tintin.Capabilities.Filesystem.Path
instance GHC.Classes.Ord Tintin.Capabilities.Filesystem.Path
instance GHC.Show.Show Tintin.Capabilities.Filesystem.Path

module Tintin.Domain.FrontMatter
data FrontMatter
FrontMatter :: Text -> Maybe Text -> Maybe Text -> FrontMatter
[title] :: FrontMatter -> Text
[subtitle] :: FrontMatter -> Maybe Text
[layout] :: FrontMatter -> Maybe Text
instance GHC.Show.Show Tintin.Domain.FrontMatter.FrontMatter
instance Data.Aeson.Types.FromJSON.FromJSON Tintin.Domain.FrontMatter.FrontMatter

module Tintin.Domain.DocumentationFile
newtype Filename
Filename :: Text -> Filename
newtype ParseError
ParseError :: Text -> ParseError
data DocumentationFile
DocumentationFile :: Text -> Text -> FrontMatter -> DocumentationFile
[filename] :: DocumentationFile -> Text
[content] :: DocumentationFile -> Text
[frontMatter] :: DocumentationFile -> FrontMatter
new :: Filename -> Text -> Either ParseError DocumentationFile
instance GHC.Show.Show Tintin.Domain.DocumentationFile.DocumentationFile
instance GHC.Show.Show Tintin.Domain.DocumentationFile.ParseError

module Tintin.Domain.HtmlFile
data BuildTool
Stack :: BuildTool
Cabal :: BuildTool
newtype CompilationError
CompilationError :: Text -> CompilationError
showCompilationError :: CompilationError -> Text
data HtmlFile
HtmlFile :: Text -> Text -> Text -> HtmlFile
[filename] :: HtmlFile -> Text
[title] :: HtmlFile -> Text
[content] :: HtmlFile -> Text
fromDocumentationFile :: DocumentationFile -> HtmlFile
run :: (Has Capability eff, Has Capability eff) => BuildTool -> HtmlFile -> Effectful eff (Either CompilationError HtmlFile)
instance GHC.Show.Show Tintin.Domain.HtmlFile.CompilationError

module Tintin.Domain.Project
data Project
data Color
Purple :: Color
LightGreen :: Color
DarkGreen :: Color
Blue :: Color
DarkBlue :: Color
Bronze :: Color
DarkOrange :: Color
LightOrange :: Color
Red :: Color
Grey :: Color
data Page
Page :: Text -> Text -> Text -> Page
[title] :: Page -> Text
[content] :: Page -> Text
[filename] :: Page -> Text
data Info
Info :: Text -> Text -> Color -> Maybe Text -> Maybe Text -> Maybe Text -> [Page] -> Info
[name] :: Info -> Text
[synopsis] :: Info -> Text
[color] :: Info -> Color
[githubLink] :: Info -> Maybe Text
[githubAuthor] :: Info -> Maybe Text
[logoUrl] :: Info -> Maybe Text
[pages] :: Info -> [Page]
data PageRef
PageRef :: Text -> Text -> PageRef
[refTitle] :: PageRef -> Text
[refFilename] :: PageRef -> Text
data Context
Context :: Maybe PageRef -> Maybe PageRef -> Context
[prevRef] :: Context -> Maybe PageRef
[nextRef] :: Context -> Maybe PageRef
instance GHC.Read.Read Tintin.Domain.Project.Color
instance GHC.Show.Show Tintin.Domain.Project.Color

module Tintin.Errors
data Errors
showAndDie :: (Has Capability eff, Show error) => [error] -> Effectful eff ()
textDie :: (Has Capability eff) => [Text] -> Effectful eff ()

module Tintin.ConfigurationLoading
data ConfigurationLoading
loadInfo :: (Has Capability eff, Has Capability eff) => [HtmlFile] -> Effectful eff Info

module Tintin.Html.Style
data Style
style :: Text
colorNames :: [(Text, Color)]

module Tintin.Html.Templating
data Templating
asset :: Text -> Text
wrap :: Info -> Context -> Page -> Text
wrapPage :: Info -> Context -> Page -> Text
nextPrev :: Context -> Html ()
siteGenerated :: HtmlT Identity ()
wrapHome :: Info -> Maybe PageRef -> Page -> Text
tintinHeader :: Info -> Page -> Html ()
tintinPostInit :: Html ()
bgColorOf :: Info -> Text

module Tintin.Parse
data Parse
docs :: (Has Capability eff, Has Capability eff) => DocumentationDirectory -> [Path] -> Effectful eff [DocumentationFile]

module Tintin.Render
data Render
perform :: (Has Capability eff, Has Capability eff, Has Capability eff) => BuildTool -> [DocumentationFile] -> Effectful eff [HtmlFile]
writeOutput :: (Has Capability eff, Has Capability eff) => OutputDirectory -> Info -> Effectful eff ()

-- | Pair up each page with context (next and previous links) by
--   alphabetical order, excluding index page.
--   
--   This function is a little more complicated than might be expected
--   because the functionality is a little nuanced. It has to:
--   
--   <ol>
--   <li>Pair each page with next and previous links based on an
--   alphabetical sorting, <i>excluding</i> the index page.</li>
--   <li>Give the <i>first</i> non-index page, alphabetically, a "previous"
--   link pointing to the index <i>if it exists</i>.</li>
--   <li>Give the index, if it exists, a "next' link to the first non-index
--   page.</li>
--   </ol>
withContext :: [Page] -> [(Page, Context)]

module Tintin
runApp :: (Has Capability eff, Has Capability eff, Has Capability eff) => Bool -> OutputDirectory -> Effectful eff ()
publish :: (Has Capability eff, Has Capability eff, Has Capability eff) => OutputDirectory -> Effectful eff ()
