hakyll-4.16.2.0: A static website compiler library
Safe HaskellSafe-Inferred
LanguageHaskell2010

Hakyll.Core.Compiler.Internal

Description

Internally used compiler module

Synopsis

Types

type Snapshot = String Source #

Whilst compiling an item, it possible to save multiple snapshots of it, and not just the final result.

data CompilerRead Source #

Environment in which a compiler runs

Constructors

CompilerRead 

Fields

data CompilerWrite Source #

Instances

Instances details
Monoid CompilerWrite Source # 
Instance details

Defined in Hakyll.Core.Compiler.Internal

Semigroup CompilerWrite Source # 
Instance details

Defined in Hakyll.Core.Compiler.Internal

Show CompilerWrite Source # 
Instance details

Defined in Hakyll.Core.Compiler.Internal

Methods

showsPrec :: Int -> CompilerWrite -> ShowS

show :: CompilerWrite -> String

showList :: [CompilerWrite] -> ShowS

data CompilerErrors a Source #

Distinguishes reasons in a CompilerError

Constructors

CompilationFailure (NonEmpty a)

One or more exceptions occured during compilation

CompilationNoResult [a]

Absence of any result, most notably in template contexts. May still have error messages.

Instances

Instances details
Functor CompilerErrors Source # 
Instance details

Defined in Hakyll.Core.Compiler.Internal

Methods

fmap :: (a -> b) -> CompilerErrors a -> CompilerErrors b

(<$) :: a -> CompilerErrors b -> CompilerErrors a

data CompilerResult a Source #

An intermediate result of a compilation step

newtype Compiler a Source #

A monad which lets you compile items and takes care of dependency tracking for you.

Constructors

Compiler 

Instances

Instances details
MonadFail Compiler Source # 
Instance details

Defined in Hakyll.Core.Compiler.Internal

Methods

fail :: String -> Compiler a

Alternative Compiler Source #

Trying alternative compilers if the first fails, regardless whether through fail, throwError or noResult. Aggregates error messages if all fail.

Instance details

Defined in Hakyll.Core.Compiler.Internal

Methods

empty :: Compiler a

(<|>) :: Compiler a -> Compiler a -> Compiler a

some :: Compiler a -> Compiler [a]

many :: Compiler a -> Compiler [a]

Applicative Compiler Source # 
Instance details

Defined in Hakyll.Core.Compiler.Internal

Methods

pure :: a -> Compiler a

(<*>) :: Compiler (a -> b) -> Compiler a -> Compiler b

liftA2 :: (a -> b -> c) -> Compiler a -> Compiler b -> Compiler c

(*>) :: Compiler a -> Compiler b -> Compiler b

(<*) :: Compiler a -> Compiler b -> Compiler a

Functor Compiler Source # 
Instance details

Defined in Hakyll.Core.Compiler.Internal

Methods

fmap :: (a -> b) -> Compiler a -> Compiler b

(<$) :: a -> Compiler b -> Compiler a

Monad Compiler Source # 
Instance details

Defined in Hakyll.Core.Compiler.Internal

Methods

(>>=) :: Compiler a -> (a -> Compiler b) -> Compiler b

(>>) :: Compiler a -> Compiler b -> Compiler b

return :: a -> Compiler a

MonadMetadata Compiler Source #

Access provided metadata from anywhere

Instance details

Defined in Hakyll.Core.Compiler.Internal

MonadError [String] Compiler Source #

Compilation may fail with multiple error messages. catchError handles errors from throwError, fail and noResult

Instance details

Defined in Hakyll.Core.Compiler.Internal

Methods

throwError :: [String] -> Compiler a

catchError :: Compiler a -> ([String] -> Compiler a) -> Compiler a

runCompiler :: Compiler a -> CompilerRead -> IO (CompilerResult a) Source #

Like unCompiler but treating IO exceptions as CompilerErrors

Core operations

compilerResult :: CompilerResult a -> Compiler a Source #

Put the result back in a compiler

compilerAsk :: Compiler CompilerRead Source #

Get the current environment

compilerUnsafeIO :: IO a -> Compiler a Source #

Run an IO computation without dependencies in a Compiler

Error operations

compilerThrow :: [String] -> Compiler a Source #

Throw errors in the Compiler.

If no messages are given, this is considered a CompilationNoResult error. Otherwise, it is treated as a proper compilation failure.

compilerNoResult :: [String] -> Compiler a Source #

Put a CompilerError with multiple messages as CompilationNoResult

compilerCatch :: Compiler a -> (CompilerErrors String -> Compiler a) -> Compiler a Source #

Allows you to recover from CompilerErrors. Uses the same parameter order as catchError so that it can be used infix.

c `compilerCatch` f = compilerTry c >>= either f return

compilerTry :: Compiler a -> Compiler (Either (CompilerErrors String) a) Source #

Allows to distinguish CompilerErrors and branch on them with Either

compilerTry = (`compilerCatch` return . Left) . fmap Right

Utilities

compilerDebugEntries :: String -> [String] -> Compiler () Source #

Pass a list of messages with a heading to the debug logger