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


-- | Terminal-based presentations using Pandoc
--   
--   Terminal-based presentations using Pandoc.
@package patat
@version 0.12.0.0


-- | Defines a cleanup action that needs to be run after we're done with a
--   slide or image.
module Patat.Cleanup
type Cleanup = IO ()


-- | When we try to read a file that is encoded in UTF-8, and the system
--   locale is not set to UTF-8, the GHC runtime system will throw an
--   error:
--   
--   <a>https://github.com/jaspervdj/patat/issues/127</a>
--   
--   However, we don't want to force people to use UTF-8 for everything. So
--   what we do is provide a replacement readFile, which first tries to
--   read the file in the system locale, and then falls back to forcing
--   UTF-8.
--   
--   If we forced UTF-8, we also want to propagate that to the output
--   handle; otherwise will get errors when we try to display these
--   characters; so withHandle should be used on the output handle
--   (typically stdout).
module Patat.EncodingFallback
data EncodingFallback
NoFallback :: EncodingFallback
Utf8Fallback :: EncodingFallback
readFile :: FilePath -> IO (EncodingFallback, Text)
withHandle :: Handle -> EncodingFallback -> IO a -> IO a
instance GHC.Show.Show Patat.EncodingFallback.EncodingFallback
instance GHC.Classes.Eq Patat.EncodingFallback.EncodingFallback

module Patat.Images.Internal
data Config a
Auto :: Config a
Explicit :: a -> Config a
data Backend
Backend :: (Config a -> IO Handle) -> Backend
data BackendNotSupported
BackendNotSupported :: String -> BackendNotSupported
data Handle
Handle :: (FilePath -> IO Cleanup) -> Handle
[hDrawImage] :: Handle -> FilePath -> IO Cleanup
instance GHC.Classes.Eq a => GHC.Classes.Eq (Patat.Images.Internal.Config a)
instance GHC.Show.Show Patat.Images.Internal.BackendNotSupported
instance Data.Data.Data Patat.Images.Internal.BackendNotSupported
instance GHC.Exception.Type.Exception Patat.Images.Internal.BackendNotSupported

module Patat.Images.ITerm2
backend :: Backend
instance GHC.Classes.Eq Patat.Images.ITerm2.Config
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Images.ITerm2.Config

module Patat.Images.Kitty
backend :: Backend
instance GHC.Classes.Eq Patat.Images.Kitty.Config
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Images.Kitty.Config

module Patat.Images.W3m
backend :: Backend
instance GHC.Show.Show Patat.Images.W3m.W3m
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Images.W3m.Config
instance GHC.Show.Show Patat.Images.W3m.Config


-- | The Pandoc AST is not extensible, so we need to use another way to
--   model different parts of slides that we want to appear bit by bit.
--   
--   We do this by modelling a slide as a list of instructions, that
--   manipulate the contents on a slide in a (for now) very basic way.
module Patat.Presentation.Instruction
data Instructions a
fromList :: [Instruction a] -> Instructions a
toList :: Instructions a -> [Instruction a]
data Instruction a
Pause :: Instruction a
Append :: [a] -> Instruction a
Delete :: Instruction a
ModifyLast :: Instruction a -> Instruction a
numFragments :: Instructions a -> Int
newtype Fragment
Fragment :: [Block] -> Fragment
renderFragment :: Int -> Instructions Block -> Fragment
instance GHC.Show.Show a => GHC.Show.Show (Patat.Presentation.Instruction.Instruction a)
instance GHC.Show.Show a => GHC.Show.Show (Patat.Presentation.Instruction.Instructions a)
instance GHC.Show.Show Patat.Presentation.Instruction.Fragment


-- | For background info on the spec, see the "Incremental lists" section
--   of the the pandoc manual.
module Patat.Presentation.Fragment
data FragmentSettings
FragmentSettings :: !Bool -> FragmentSettings
[fsIncrementalLists] :: FragmentSettings -> !Bool
fragmentInstructions :: FragmentSettings -> Instructions Block -> Instructions Block
fragmentBlocks :: FragmentSettings -> [Block] -> [Instruction Block]
fragmentBlock :: FragmentSettings -> Block -> [Instruction Block]
instance GHC.Show.Show Patat.Presentation.Fragment.FragmentSettings


-- | This is a small pretty-printing library.
module Patat.PrettyPrint.Internal

-- | Control actions for the terminal.
data Control
ClearScreenControl :: Control
GoToLineControl :: Int -> Control

-- | A simple chunk of text. All ANSI codes are "reset" after printing.
data Chunk
StringChunk :: [SGR] -> String -> Chunk
NewlineChunk :: Chunk
ControlChunk :: Control -> Chunk
type Chunks = [Chunk]
chunkToString :: Chunk -> String
chunkLines :: Chunks -> [Chunks]
data DocE d
String :: String -> DocE d
Softspace :: DocE d
Hardspace :: DocE d
Softline :: DocE d
Hardline :: DocE d
WrapAt :: Maybe Int -> d -> DocE d
[wrapAtCol] :: DocE d -> Maybe Int
[wrapDoc] :: DocE d -> d
Ansi :: ([SGR] -> [SGR]) -> d -> DocE d

-- | Modifies current codes.
[ansiCode] :: DocE d -> [SGR] -> [SGR]
[ansiDoc] :: DocE d -> d
Indent :: Indentation [Chunk] -> Indentation [Chunk] -> d -> DocE d
[indentFirstLine] :: DocE d -> Indentation [Chunk]
[indentOtherLines] :: DocE d -> Indentation [Chunk]
[indentDoc] :: DocE d -> d
Control :: Control -> DocE d
chunkToDocE :: Chunk -> DocE Doc
data Indentation a
Indentation :: Int -> a -> Indentation a
newtype Doc
Doc :: [DocE Doc] -> Doc
[unDoc] :: Doc -> [DocE Doc]
docToChunks :: Doc -> Chunks
toString :: Doc -> String

-- | Returns the rows and columns necessary to render this document
dimensions :: Doc -> (Int, Int)
null :: Doc -> Bool
hPutDoc :: Handle -> Doc -> IO ()
putDoc :: Doc -> IO ()
mkDoc :: DocE Doc -> Doc
string :: String -> Doc
instance GHC.Show.Show Patat.PrettyPrint.Internal.Control
instance GHC.Classes.Eq Patat.PrettyPrint.Internal.Control
instance GHC.Show.Show Patat.PrettyPrint.Internal.Chunk
instance GHC.Classes.Eq Patat.PrettyPrint.Internal.Chunk
instance Data.Traversable.Traversable Patat.PrettyPrint.Internal.Indentation
instance GHC.Base.Functor Patat.PrettyPrint.Internal.Indentation
instance Data.Foldable.Foldable Patat.PrettyPrint.Internal.Indentation
instance GHC.Base.Functor Patat.PrettyPrint.Internal.DocE
instance GHC.Base.Semigroup Patat.PrettyPrint.Internal.Doc
instance GHC.Base.Monoid Patat.PrettyPrint.Internal.Doc
instance GHC.Show.Show Patat.PrettyPrint.Internal.Doc
instance Data.String.IsString Patat.PrettyPrint.Internal.Doc


-- | This is a small pretty-printing library.
module Patat.PrettyPrint
data Doc
toString :: Doc -> String

-- | Returns the rows and columns necessary to render this document
dimensions :: Doc -> (Int, Int)
null :: Doc -> Bool
hPutDoc :: Handle -> Doc -> IO ()
putDoc :: Doc -> IO ()
char :: Char -> Doc
string :: String -> Doc
text :: Text -> Doc
space :: Doc
spaces :: Int -> Doc
softline :: Doc
hardline :: Doc
wrapAt :: Maybe Int -> Doc -> Doc
data Indentation a
Indentation :: Int -> a -> Indentation a
indent :: Indentation Doc -> Indentation Doc -> Doc -> Doc

-- | Only strips leading spaces
deindent :: Doc -> Doc
ansi :: [SGR] -> Doc -> Doc
(<+>) :: Doc -> Doc -> Doc
infixr 6 <+>
(<$$>) :: Doc -> Doc -> Doc
infixr 5 <$$>
vcat :: [Doc] -> Doc
intersperse :: Doc -> [Doc] -> Doc
data Alignment
AlignLeft :: Alignment
AlignCenter :: Alignment
AlignRight :: Alignment
align :: Int -> Alignment -> Doc -> Doc

-- | Like the unix program <a>paste</a>.
paste :: [Doc] -> Doc
removeControls :: Doc -> Doc
clearScreen :: Doc
goToLine :: Int -> Doc
instance GHC.Show.Show Patat.PrettyPrint.Alignment
instance GHC.Classes.Ord Patat.PrettyPrint.Alignment
instance GHC.Classes.Eq Patat.PrettyPrint.Alignment

module Patat.Size
data Size
Size :: Int -> Int -> Size
[sRows] :: Size -> Int
[sCols] :: Size -> Int
getTerminalSize :: IO Size
instance GHC.Show.Show Patat.Size.Size

module Patat.PrettyPrint.Matrix
type Matrix = Vector Cell
data Cell
Cell :: [SGR] -> Char -> Cell
emptyCell :: Cell
docToMatrix :: Size -> Doc -> Matrix
hPutMatrix :: Handle -> Size -> Matrix -> IO ()
instance GHC.Show.Show Patat.PrettyPrint.Matrix.Cell
instance GHC.Classes.Eq Patat.PrettyPrint.Matrix.Cell

module Patat.Theme
data Theme
Theme :: !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Text -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe Style -> !Maybe SyntaxHighlighting -> Theme
[themeBorders] :: Theme -> !Maybe Style
[themeHeader] :: Theme -> !Maybe Style
[themeCodeBlock] :: Theme -> !Maybe Style
[themeBulletList] :: Theme -> !Maybe Style
[themeBulletListMarkers] :: Theme -> !Maybe Text
[themeOrderedList] :: Theme -> !Maybe Style
[themeBlockQuote] :: Theme -> !Maybe Style
[themeDefinitionTerm] :: Theme -> !Maybe Style
[themeDefinitionList] :: Theme -> !Maybe Style
[themeTableHeader] :: Theme -> !Maybe Style
[themeTableSeparator] :: Theme -> !Maybe Style
[themeLineBlock] :: Theme -> !Maybe Style
[themeEmph] :: Theme -> !Maybe Style
[themeStrong] :: Theme -> !Maybe Style
[themeUnderline] :: Theme -> !Maybe Style
[themeCode] :: Theme -> !Maybe Style
[themeLinkText] :: Theme -> !Maybe Style
[themeLinkTarget] :: Theme -> !Maybe Style
[themeStrikeout] :: Theme -> !Maybe Style
[themeQuoted] :: Theme -> !Maybe Style
[themeMath] :: Theme -> !Maybe Style
[themeImageText] :: Theme -> !Maybe Style
[themeImageTarget] :: Theme -> !Maybe Style
[themeSyntaxHighlighting] :: Theme -> !Maybe SyntaxHighlighting
defaultTheme :: Theme
newtype Style
Style :: [SGR] -> Style
[unStyle] :: Style -> [SGR]
newtype SyntaxHighlighting
SyntaxHighlighting :: Map String Style -> SyntaxHighlighting
[unSyntaxHighlighting] :: SyntaxHighlighting -> Map String Style
defaultSyntaxHighlighting :: SyntaxHighlighting
syntaxHighlight :: Theme -> TokenType -> Maybe Style
instance Data.Aeson.Types.ToJSON.ToJSON Patat.Theme.Theme
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Theme.Theme
instance GHC.Show.Show Patat.Theme.Style
instance GHC.Base.Semigroup Patat.Theme.Style
instance GHC.Base.Monoid Patat.Theme.Style
instance Data.Aeson.Types.ToJSON.ToJSON Patat.Theme.SyntaxHighlighting
instance GHC.Show.Show Patat.Theme.SyntaxHighlighting
instance GHC.Base.Semigroup Patat.Theme.SyntaxHighlighting
instance GHC.Base.Monoid Patat.Theme.SyntaxHighlighting
instance GHC.Show.Show Patat.Theme.Theme
instance GHC.Base.Semigroup Patat.Theme.Theme
instance GHC.Base.Monoid Patat.Theme.Theme
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Theme.SyntaxHighlighting
instance Data.Aeson.Types.ToJSON.ToJSON Patat.Theme.Style
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Theme.Style

module Patat.Presentation.Settings

-- | These are patat-specific settings. That is where they differ from more
--   general metadata (author, title...)
data PresentationSettings
PresentationSettings :: !Maybe (FlexibleNum Int) -> !Maybe (FlexibleNum Int) -> !Maybe MarginSettings -> !Maybe Wrap -> !Maybe (FlexibleNum Int) -> !Maybe Theme -> !Maybe Bool -> !Maybe (FlexibleNum Int) -> !Maybe Int -> !Maybe ExtensionList -> !Maybe ImageSettings -> !Maybe Bool -> !Maybe EvalSettingsMap -> !Maybe Bool -> !Maybe [FilePath] -> !Maybe SpeakerNotesSettings -> !Maybe TransitionSettings -> PresentationSettings
[psRows] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psColumns] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psMargins] :: PresentationSettings -> !Maybe MarginSettings
[psWrap] :: PresentationSettings -> !Maybe Wrap
[psTabStop] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psTheme] :: PresentationSettings -> !Maybe Theme
[psIncrementalLists] :: PresentationSettings -> !Maybe Bool
[psAutoAdvanceDelay] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psSlideLevel] :: PresentationSettings -> !Maybe Int
[psPandocExtensions] :: PresentationSettings -> !Maybe ExtensionList
[psImages] :: PresentationSettings -> !Maybe ImageSettings
[psBreadcrumbs] :: PresentationSettings -> !Maybe Bool
[psEval] :: PresentationSettings -> !Maybe EvalSettingsMap
[psSlideNumber] :: PresentationSettings -> !Maybe Bool
[psSyntaxDefinitions] :: PresentationSettings -> !Maybe [FilePath]
[psSpeakerNotes] :: PresentationSettings -> !Maybe SpeakerNotesSettings
[psTransition] :: PresentationSettings -> !Maybe TransitionSettings
defaultPresentationSettings :: PresentationSettings
data Wrap
NoWrap :: Wrap
AutoWrap :: Wrap
WrapAt :: Int -> Wrap
data AutoOr a
Auto :: AutoOr a
NotAuto :: a -> AutoOr a
data MarginSettings
MarginSettings :: !Maybe (AutoOr (FlexibleNum Int)) -> !Maybe (AutoOr (FlexibleNum Int)) -> !Maybe (AutoOr (FlexibleNum Int)) -> MarginSettings
[msTop] :: MarginSettings -> !Maybe (AutoOr (FlexibleNum Int))
[msLeft] :: MarginSettings -> !Maybe (AutoOr (FlexibleNum Int))
[msRight] :: MarginSettings -> !Maybe (AutoOr (FlexibleNum Int))
newtype ExtensionList
ExtensionList :: Extensions -> ExtensionList
[unExtensionList] :: ExtensionList -> Extensions
defaultExtensionList :: ExtensionList
data ImageSettings
ImageSettings :: !Text -> !Object -> ImageSettings
[isBackend] :: ImageSettings -> !Text
[isParams] :: ImageSettings -> !Object
type EvalSettingsMap = HashMap Text EvalSettings
data EvalSettingsContainer
EvalContainerCode :: EvalSettingsContainer
EvalContainerNone :: EvalSettingsContainer
EvalContainerInline :: EvalSettingsContainer
data EvalSettings
EvalSettings :: !Text -> !Bool -> !Bool -> !EvalSettingsContainer -> EvalSettings
[evalCommand] :: EvalSettings -> !Text
[evalReplace] :: EvalSettings -> !Bool
[evalFragment] :: EvalSettings -> !Bool
[evalContainer] :: EvalSettings -> !EvalSettingsContainer
data SpeakerNotesSettings
SpeakerNotesSettings :: !FilePath -> SpeakerNotesSettings
[snsFile] :: SpeakerNotesSettings -> !FilePath
data TransitionSettings
TransitionSettings :: !Text -> !Object -> TransitionSettings
[tsType] :: TransitionSettings -> !Text
[tsParams] :: TransitionSettings -> !Object
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.PresentationSettings
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.SpeakerNotesSettings
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.MarginSettings
instance GHC.Show.Show Patat.Presentation.Settings.Wrap
instance GHC.Show.Show a => GHC.Show.Show (Patat.Presentation.Settings.AutoOr a)
instance GHC.Show.Show Patat.Presentation.Settings.MarginSettings
instance GHC.Show.Show Patat.Presentation.Settings.ExtensionList
instance GHC.Show.Show Patat.Presentation.Settings.ImageSettings
instance GHC.Show.Show Patat.Presentation.Settings.EvalSettingsContainer
instance GHC.Show.Show Patat.Presentation.Settings.EvalSettings
instance GHC.Show.Show Patat.Presentation.Settings.SpeakerNotesSettings
instance GHC.Show.Show Patat.Presentation.Settings.TransitionSettings
instance GHC.Show.Show Patat.Presentation.Settings.PresentationSettings
instance GHC.Base.Semigroup Patat.Presentation.Settings.PresentationSettings
instance GHC.Base.Monoid Patat.Presentation.Settings.PresentationSettings
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.TransitionSettings
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.EvalSettings
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.EvalSettingsContainer
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.ImageSettings
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.ExtensionList
instance GHC.Base.Semigroup Patat.Presentation.Settings.MarginSettings
instance GHC.Base.Monoid Patat.Presentation.Settings.MarginSettings
instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Patat.Presentation.Settings.AutoOr a)
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Presentation.Settings.Wrap

module Patat.Presentation.Comments
data Comment
Comment :: SpeakerNotes -> Either String PresentationSettings -> Comment
[cSpeakerNotes] :: Comment -> SpeakerNotes
[cConfig] :: Comment -> Either String PresentationSettings
parse :: Block -> Maybe Comment
remove :: [Block] -> [Block]

-- | Take all comments from the front of the list. Return those and the
--   remaining blocks.
split :: [Block] -> (Comment, [Block])

-- | Partition the list into speaker notes and other blocks.
partition :: [Block] -> (Comment, [Block])
data SpeakerNotes
speakerNotesToText :: SpeakerNotes -> Text
data SpeakerNotesHandle
withSpeakerNotesHandle :: SpeakerNotesSettings -> (SpeakerNotesHandle -> IO a) -> IO a
writeSpeakerNotes :: SpeakerNotesHandle -> EncodingFallback -> SpeakerNotes -> IO ()
parseSlideSettings :: Comment -> Either String PresentationSettings
instance GHC.Show.Show Patat.Presentation.Comments.SpeakerNotes
instance GHC.Base.Semigroup Patat.Presentation.Comments.SpeakerNotes
instance GHC.Base.Monoid Patat.Presentation.Comments.SpeakerNotes
instance GHC.Classes.Eq Patat.Presentation.Comments.SpeakerNotes
instance GHC.Show.Show Patat.Presentation.Comments.Comment
instance GHC.Base.Semigroup Patat.Presentation.Comments.Comment
instance GHC.Base.Monoid Patat.Presentation.Comments.Comment

module Patat.Transition.Internal
newtype Duration
Duration :: Double -> Duration
threadDelayDuration :: Duration -> IO ()
data Transition
[Transition] :: FromJSON conf => (conf -> TransitionGen) -> Transition
type TransitionGen = Size -> Matrix -> Matrix -> StdGen -> NonEmpty (Matrix, Duration)
data TransitionId
data TransitionInstance
TransitionInstance :: TransitionId -> Size -> NonEmpty (Matrix, Duration) -> TransitionInstance
[tiId] :: TransitionInstance -> TransitionId
[tiSize] :: TransitionInstance -> Size
[tiFrames] :: TransitionInstance -> NonEmpty (Matrix, Duration)
newTransition :: TransitionGen -> Size -> Doc -> Doc -> IO TransitionInstance
stepTransition :: TransitionId -> TransitionInstance -> Maybe TransitionInstance

-- | Given an optional duration and frame rate, generate a sequence of
--   evenly spaced frames, represented by a number ranging from [0 .. 1].
evenlySpacedFrames :: Maybe Double -> Maybe Int -> NonEmpty (Double, Duration)
instance GHC.Show.Show Patat.Transition.Internal.Duration
instance GHC.Classes.Eq Patat.Transition.Internal.TransitionId

module Patat.Transition.Dissolve
transition :: Config -> TransitionGen
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Transition.Dissolve.Config

module Patat.Transition.Matrix
transition :: Config -> TransitionGen
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Transition.Matrix.Config

module Patat.Transition.SlideLeft
transition :: Config -> TransitionGen
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Transition.SlideLeft.Config

module Patat.Transition
newtype Duration
Duration :: Double -> Duration
threadDelayDuration :: Duration -> IO ()
type TransitionGen = Size -> Matrix -> Matrix -> StdGen -> NonEmpty (Matrix, Duration)
data TransitionId
data TransitionInstance
TransitionInstance :: TransitionId -> Size -> NonEmpty (Matrix, Duration) -> TransitionInstance
[tiId] :: TransitionInstance -> TransitionId
[tiSize] :: TransitionInstance -> Size
[tiFrames] :: TransitionInstance -> NonEmpty (Matrix, Duration)
parseTransitionSettings :: TransitionSettings -> Either String TransitionGen
newTransition :: TransitionGen -> Size -> Doc -> Doc -> IO TransitionInstance
stepTransition :: TransitionId -> TransitionInstance -> Maybe TransitionInstance
instance Data.Aeson.Types.FromJSON.FromJSON Patat.Transition.RandomTransitionSettings

module Patat.Presentation.Internal
type Breadcrumbs = [(Int, [Inline])]
data Presentation
Presentation :: !FilePath -> !EncodingFallback -> ![Inline] -> ![Inline] -> !PresentationSettings -> !Seq Slide -> !Seq Breadcrumbs -> !Seq PresentationSettings -> !Seq (Maybe TransitionGen) -> !Index -> !SyntaxMap -> Presentation
[pFilePath] :: Presentation -> !FilePath
[pEncodingFallback] :: Presentation -> !EncodingFallback
[pTitle] :: Presentation -> ![Inline]
[pAuthor] :: Presentation -> ![Inline]
[pSettings] :: Presentation -> !PresentationSettings
[pSlides] :: Presentation -> !Seq Slide
[pBreadcrumbs] :: Presentation -> !Seq Breadcrumbs
[pSlideSettings] :: Presentation -> !Seq PresentationSettings
[pTransitionGens] :: Presentation -> !Seq (Maybe TransitionGen)
[pActiveFragment] :: Presentation -> !Index
[pSyntaxMap] :: Presentation -> !SyntaxMap

-- | These are patat-specific settings. That is where they differ from more
--   general metadata (author, title...)
data PresentationSettings
PresentationSettings :: !Maybe (FlexibleNum Int) -> !Maybe (FlexibleNum Int) -> !Maybe MarginSettings -> !Maybe Wrap -> !Maybe (FlexibleNum Int) -> !Maybe Theme -> !Maybe Bool -> !Maybe (FlexibleNum Int) -> !Maybe Int -> !Maybe ExtensionList -> !Maybe ImageSettings -> !Maybe Bool -> !Maybe EvalSettingsMap -> !Maybe Bool -> !Maybe [FilePath] -> !Maybe SpeakerNotesSettings -> !Maybe TransitionSettings -> PresentationSettings
[psRows] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psColumns] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psMargins] :: PresentationSettings -> !Maybe MarginSettings
[psWrap] :: PresentationSettings -> !Maybe Wrap
[psTabStop] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psTheme] :: PresentationSettings -> !Maybe Theme
[psIncrementalLists] :: PresentationSettings -> !Maybe Bool
[psAutoAdvanceDelay] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psSlideLevel] :: PresentationSettings -> !Maybe Int
[psPandocExtensions] :: PresentationSettings -> !Maybe ExtensionList
[psImages] :: PresentationSettings -> !Maybe ImageSettings
[psBreadcrumbs] :: PresentationSettings -> !Maybe Bool
[psEval] :: PresentationSettings -> !Maybe EvalSettingsMap
[psSlideNumber] :: PresentationSettings -> !Maybe Bool
[psSyntaxDefinitions] :: PresentationSettings -> !Maybe [FilePath]
[psSpeakerNotes] :: PresentationSettings -> !Maybe SpeakerNotesSettings
[psTransition] :: PresentationSettings -> !Maybe TransitionSettings
defaultPresentationSettings :: PresentationSettings
data MarginSettings
MarginSettings :: !Maybe (AutoOr (FlexibleNum Int)) -> !Maybe (AutoOr (FlexibleNum Int)) -> !Maybe (AutoOr (FlexibleNum Int)) -> MarginSettings
[msTop] :: MarginSettings -> !Maybe (AutoOr (FlexibleNum Int))
[msLeft] :: MarginSettings -> !Maybe (AutoOr (FlexibleNum Int))
[msRight] :: MarginSettings -> !Maybe (AutoOr (FlexibleNum Int))
data Margins
Margins :: AutoOr Int -> AutoOr Int -> AutoOr Int -> Margins
[mTop] :: Margins -> AutoOr Int
[mLeft] :: Margins -> AutoOr Int
[mRight] :: Margins -> AutoOr Int
margins :: PresentationSettings -> Margins
newtype ExtensionList
ExtensionList :: Extensions -> ExtensionList
[unExtensionList] :: ExtensionList -> Extensions
defaultExtensionList :: ExtensionList
data ImageSettings
ImageSettings :: !Text -> !Object -> ImageSettings
[isBackend] :: ImageSettings -> !Text
[isParams] :: ImageSettings -> !Object
type EvalSettingsMap = HashMap Text EvalSettings
data EvalSettings
EvalSettings :: !Text -> !Bool -> !Bool -> !EvalSettingsContainer -> EvalSettings
[evalCommand] :: EvalSettings -> !Text
[evalReplace] :: EvalSettings -> !Bool
[evalFragment] :: EvalSettings -> !Bool
[evalContainer] :: EvalSettings -> !EvalSettingsContainer
data Slide
Slide :: !Comment -> !SlideContent -> Slide
[slideComment] :: Slide -> !Comment
[slideContent] :: Slide -> !SlideContent
data SlideContent
ContentSlide :: Instructions Block -> SlideContent
TitleSlide :: Int -> [Inline] -> SlideContent
newtype Fragment
Fragment :: [Block] -> Fragment

-- | Active slide, active fragment.
type Index = (Int, Int)
getSlide :: Int -> Presentation -> Maybe Slide
numFragments :: Slide -> Int
data ActiveFragment
ActiveContent :: Fragment -> ActiveFragment
ActiveTitle :: Block -> ActiveFragment
activeFragment :: Presentation -> Maybe ActiveFragment
activeSpeakerNotes :: Presentation -> SpeakerNotes
getSettings :: Int -> Presentation -> PresentationSettings
activeSettings :: Presentation -> PresentationSettings
data Size
getPresentationSize :: Presentation -> IO Size
instance GHC.Show.Show Patat.Presentation.Internal.Margins
instance GHC.Show.Show Patat.Presentation.Internal.SlideContent
instance GHC.Show.Show Patat.Presentation.Internal.Slide
instance GHC.Show.Show Patat.Presentation.Internal.ActiveFragment

module Patat.Presentation.Display.Internal
data DisplaySettings
DisplaySettings :: !Size -> !Wrap -> !Int -> !Margins -> !Theme -> !SyntaxMap -> DisplaySettings
[dsSize] :: DisplaySettings -> !Size
[dsWrap] :: DisplaySettings -> !Wrap
[dsTabStop] :: DisplaySettings -> !Int
[dsMargins] :: DisplaySettings -> !Margins
[dsTheme] :: DisplaySettings -> !Theme
[dsSyntaxMap] :: DisplaySettings -> !SyntaxMap
themed :: DisplaySettings -> (Theme -> Maybe Style) -> Doc -> Doc

module Patat.Presentation.Display.Table
data Table
Table :: Doc -> [Alignment] -> [Doc] -> [[Doc]] -> Table
[tCaption] :: Table -> Doc
[tAligns] :: Table -> [Alignment]
[tHeaders] :: Table -> [Doc]
[tRows] :: Table -> [[Doc]]
prettyTable :: DisplaySettings -> Table -> Doc
themed :: DisplaySettings -> (Theme -> Maybe Style) -> Doc -> Doc


-- | Displaying code blocks, optionally with syntax highlighting.
module Patat.Presentation.Display.CodeBlock
prettyCodeBlock :: DisplaySettings -> [Text] -> Text -> Doc

module Patat.Images
data Backend
data Handle
withHandle :: ImageSettings -> (Handle -> IO a) -> IO a
drawImage :: Handle -> FilePath -> IO Cleanup

module Patat.Eval
eval :: Presentation -> IO Presentation
instance GHC.Show.Show Patat.Eval.EvalResult


-- | Read a presentation from disk.
module Patat.Presentation.Read
readPresentation :: FilePath -> IO (Either String Presentation)

-- | Find level of header that starts slides. This is defined as the least
--   header that occurs before a non-header in the blocks.
detectSlideLevel :: Pandoc -> Int

-- | Read settings from the metadata block in the Pandoc document.
readMetaSettings :: Text -> Either String PresentationSettings


-- | Module that allows the user to interact with the presentation
module Patat.Presentation.Interactive
data PresentationCommand
Exit :: PresentationCommand
Forward :: PresentationCommand
Backward :: PresentationCommand
SkipForward :: PresentationCommand
SkipBackward :: PresentationCommand
First :: PresentationCommand
Last :: PresentationCommand
Reload :: PresentationCommand
Seek :: Int -> PresentationCommand
UnknownCommand :: String -> PresentationCommand
readPresentationCommand :: Handle -> IO PresentationCommand
data UpdatedPresentation
UpdatedPresentation :: !Presentation -> UpdatedPresentation
ExitedPresentation :: UpdatedPresentation
ErroredPresentation :: String -> UpdatedPresentation
updatePresentation :: PresentationCommand -> Presentation -> IO UpdatedPresentation
instance GHC.Show.Show Patat.Presentation.Interactive.PresentationCommand
instance GHC.Classes.Eq Patat.Presentation.Interactive.PresentationCommand

module Patat.Presentation.Display
data Display
DisplayDoc :: Doc -> Display
DisplayImage :: FilePath -> Display
displayPresentation :: Size -> Presentation -> Display

-- | Displays an error in the place of the presentation. This is useful if
--   we want to display an error but keep the presentation running.
displayPresentationError :: Size -> Presentation -> String -> Doc
dumpPresentation :: Presentation -> IO ()
instance GHC.Show.Show Patat.Presentation.Display.Display

module Patat.Presentation

-- | These are patat-specific settings. That is where they differ from more
--   general metadata (author, title...)
data PresentationSettings
PresentationSettings :: !Maybe (FlexibleNum Int) -> !Maybe (FlexibleNum Int) -> !Maybe MarginSettings -> !Maybe Wrap -> !Maybe (FlexibleNum Int) -> !Maybe Theme -> !Maybe Bool -> !Maybe (FlexibleNum Int) -> !Maybe Int -> !Maybe ExtensionList -> !Maybe ImageSettings -> !Maybe Bool -> !Maybe EvalSettingsMap -> !Maybe Bool -> !Maybe [FilePath] -> !Maybe SpeakerNotesSettings -> !Maybe TransitionSettings -> PresentationSettings
[psRows] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psColumns] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psMargins] :: PresentationSettings -> !Maybe MarginSettings
[psWrap] :: PresentationSettings -> !Maybe Wrap
[psTabStop] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psTheme] :: PresentationSettings -> !Maybe Theme
[psIncrementalLists] :: PresentationSettings -> !Maybe Bool
[psAutoAdvanceDelay] :: PresentationSettings -> !Maybe (FlexibleNum Int)
[psSlideLevel] :: PresentationSettings -> !Maybe Int
[psPandocExtensions] :: PresentationSettings -> !Maybe ExtensionList
[psImages] :: PresentationSettings -> !Maybe ImageSettings
[psBreadcrumbs] :: PresentationSettings -> !Maybe Bool
[psEval] :: PresentationSettings -> !Maybe EvalSettingsMap
[psSlideNumber] :: PresentationSettings -> !Maybe Bool
[psSyntaxDefinitions] :: PresentationSettings -> !Maybe [FilePath]
[psSpeakerNotes] :: PresentationSettings -> !Maybe SpeakerNotesSettings
[psTransition] :: PresentationSettings -> !Maybe TransitionSettings
defaultPresentationSettings :: PresentationSettings
data Presentation
Presentation :: !FilePath -> !EncodingFallback -> ![Inline] -> ![Inline] -> !PresentationSettings -> !Seq Slide -> !Seq Breadcrumbs -> !Seq PresentationSettings -> !Seq (Maybe TransitionGen) -> !Index -> !SyntaxMap -> Presentation
[pFilePath] :: Presentation -> !FilePath
[pEncodingFallback] :: Presentation -> !EncodingFallback
[pTitle] :: Presentation -> ![Inline]
[pAuthor] :: Presentation -> ![Inline]
[pSettings] :: Presentation -> !PresentationSettings
[pSlides] :: Presentation -> !Seq Slide
[pBreadcrumbs] :: Presentation -> !Seq Breadcrumbs
[pSlideSettings] :: Presentation -> !Seq PresentationSettings
[pTransitionGens] :: Presentation -> !Seq (Maybe TransitionGen)
[pActiveFragment] :: Presentation -> !Index
[pSyntaxMap] :: Presentation -> !SyntaxMap
readPresentation :: FilePath -> IO (Either String Presentation)
activeSpeakerNotes :: Presentation -> SpeakerNotes
data Size
getPresentationSize :: Presentation -> IO Size
data Display
DisplayDoc :: Doc -> Display
DisplayImage :: FilePath -> Display
displayPresentation :: Size -> Presentation -> Display

-- | Displays an error in the place of the presentation. This is useful if
--   we want to display an error but keep the presentation running.
displayPresentationError :: Size -> Presentation -> String -> Doc
dumpPresentation :: Presentation -> IO ()
data PresentationCommand
Exit :: PresentationCommand
Forward :: PresentationCommand
Backward :: PresentationCommand
SkipForward :: PresentationCommand
SkipBackward :: PresentationCommand
First :: PresentationCommand
Last :: PresentationCommand
Reload :: PresentationCommand
Seek :: Int -> PresentationCommand
UnknownCommand :: String -> PresentationCommand
readPresentationCommand :: Handle -> IO PresentationCommand
data UpdatedPresentation
UpdatedPresentation :: !Presentation -> UpdatedPresentation
ExitedPresentation :: UpdatedPresentation
ErroredPresentation :: String -> UpdatedPresentation
updatePresentation :: PresentationCommand -> Presentation -> IO UpdatedPresentation

module Patat.AutoAdvance

-- | Utility to make auto advancing optional.
maybeAutoAdvance :: Maybe Int -> Chan PresentationCommand -> (Chan PresentationCommand -> IO a) -> IO a

-- | This function takes an existing channel for presentation commands
--   (presumably coming from human input) and creates a new one that
--   <i>also</i> sends a <a>Forward</a> command if nothing happens for N
--   seconds.
autoAdvance :: Int -> Chan PresentationCommand -> (Chan PresentationCommand -> IO a) -> IO a

module Patat.Main
main :: IO ()
instance GHC.Show.Show Patat.Main.Options
