Copyright | Copyright (c) 2021 Travis Cardwell |
---|---|
License | MIT |
Safe Haskell | None |
Language | Haskell2010 |
This module provides high-level as well as low-level API functions for transforming literate source code.
Synopsis
- version :: String
- transformTextToText :: SourceFormat -> Options -> Text -> Text
- transformTextToHandle :: MonadIO m => SourceFormat -> Options -> Text -> Handle -> m ()
- transformTextToFile :: MonadUnliftIO m => SourceFormat -> Options -> Text -> FilePath -> m ()
- transformHandleToText :: MonadIO m => SourceFormat -> Options -> Handle -> m Text
- transformHandleToHandle :: MonadIO m => SourceFormat -> Options -> Handle -> Handle -> m ()
- transformHandleToFile :: MonadUnliftIO m => SourceFormat -> Options -> Handle -> FilePath -> m ()
- transformFileToText :: MonadUnliftIO m => SourceFormat -> Options -> FilePath -> m Text
- transformFileToHandle :: MonadUnliftIO m => SourceFormat -> Options -> FilePath -> Handle -> m ()
- transformFileToFile :: MonadUnliftIO m => SourceFormat -> Options -> FilePath -> FilePath -> m ()
- runPure :: SourceFormat -> Options -> ConduitT () Text Identity () -> ConduitT Text Void Identity r -> r
- runIO :: MonadIO m => SourceFormat -> Options -> ConduitT () Text m () -> ConduitT Text Void m r -> m r
- runResource :: MonadUnliftIO m => SourceFormat -> Options -> ConduitT () Text (ResourceT m) () -> ConduitT Text Void (ResourceT m) r -> m r
- sourceString :: Monad m => String -> ConduitT i Text m ()
- sourceText :: Monad m => Text -> ConduitT i Text m ()
- sourceLazyText :: Monad m => Text -> ConduitT i Text m ()
- sourceByteString :: Monad m => ByteString -> ConduitT i Text m ()
- sourceLazyByteString :: Monad m => ByteString -> ConduitT i Text m ()
- sourceHandle :: MonadIO m => Handle -> ConduitT i Text m ()
- sourceFile :: MonadResource m => FilePath -> ConduitT i Text m ()
- sinkString :: Monad m => ConduitT Text o m String
- sinkText :: Monad m => ConduitT Text o m Text
- sinkLazyText :: Monad m => ConduitT Text o m Text
- sinkByteString :: Monad m => ConduitT Text o m ByteString
- sinkLazyByteString :: Monad m => ConduitT Text o m ByteString
- sinkHandle :: MonadIO m => Handle -> ConduitT Text o m ()
- sinkFile :: MonadResource m => FilePath -> ConduitT Text o m ()
- transform :: Monad m => SourceFormat -> Options -> ConduitT Text Text m ()
Constants
API
High-Level
This high-level API provides functions for transforming literate source
code. These functions provide support for transforming from/to lazy
Text
, Handle
s, and files.
Example usage:
{-# LANGUAGE OverloadedStrings #-} module Main (main) where -- https://hackage.haskell.org/package/literatex import qualified LiterateX import qualified LiterateX.Renderer as Renderer import qualified LiterateX.Types.SourceFormat as SourceFormat main :: IO () main = LiterateX.transformFileToFile SourceFormat.LiterateHaskell (Renderer.defaultOptionsFor "haskell") "demo.lhs" "demo.md"
transformTextToText :: SourceFormat -> Options -> Text -> Text Source #
transformTextToHandle :: MonadIO m => SourceFormat -> Options -> Text -> Handle -> m () Source #
transformTextToFile :: MonadUnliftIO m => SourceFormat -> Options -> Text -> FilePath -> m () Source #
Transform from lazy Text
to a file
Since: 0.0.1.0
transformHandleToText :: MonadIO m => SourceFormat -> Options -> Handle -> m Text Source #
transformHandleToHandle :: MonadIO m => SourceFormat -> Options -> Handle -> Handle -> m () Source #
transformHandleToFile :: MonadUnliftIO m => SourceFormat -> Options -> Handle -> FilePath -> m () Source #
Transform from a Handle
to a file
Since: 0.0.1.0
transformFileToText :: MonadUnliftIO m => SourceFormat -> Options -> FilePath -> m Text Source #
Transform from a file to lazy Text
Since: 0.0.1.0
transformFileToHandle :: MonadUnliftIO m => SourceFormat -> Options -> FilePath -> Handle -> m () Source #
Transform from a file to a Handle
Since: 0.0.1.0
transformFileToFile :: MonadUnliftIO m => SourceFormat -> Options -> FilePath -> FilePath -> m () Source #
Transform from a file to a file
Since: 0.0.1.0
Low-Level
This low-level API provides more control over transforming literate source
code, using Conduit. The transform
transformer implements the
transformation, transforming lines of input Text
to lines of output
Text
. Various producers are provided to produce lines of input
Text
from common sources, and various consumers are provided to consume
lines of output Text
to common sinks. These can be used separately if
necessary, but some run functions are provided for common usage.
Example usage:
{-# LANGUAGE OverloadedStrings #-} module Main (main) where -- https://hackage.haskell.org/package/base import System.IO (stdout) -- https://hackage.haskell.org/package/literatex import qualified LiterateX import qualified LiterateX.Renderer as Renderer import qualified LiterateX.Types.SourceFormat as SourceFormat main :: IO () main = do let demoBS = "..." LiterateX.runIO SourceFormat.LiterateHaskell (Renderer.defaultOptionsFor "haskell") (LiterateX.sourceByteString demoBS) (LiterateX.sinkHandle stdout)
:: SourceFormat | |
-> Options | |
-> ConduitT () Text Identity () | input line producer |
-> ConduitT Text Void Identity r | output line consumer |
-> r |
Run a pure LiterateX transformation
This function works with the following input line producers:
This function works with the following output line consumers:
Since: 0.0.1.0
:: MonadIO m | |
=> SourceFormat | |
-> Options | |
-> ConduitT () Text m () | input line producer |
-> ConduitT Text Void m r | output line consumer |
-> m r |
Run a LiterateX transformation using IO
This function works with the following input line producers:
This function works with the following output line consumers:
Since: 0.0.1.0
:: MonadUnliftIO m | |
=> SourceFormat | |
-> Options | |
-> ConduitT () Text (ResourceT m) () | input line producer |
-> ConduitT Text Void (ResourceT m) r | output line consumer |
-> m r |
Run a LiterateX transformation using resource management
This function works with the following input line producers:
This function works with the following output line consumers:
Since: 0.0.1.0
Producers
sourceString :: Monad m => String -> ConduitT i Text m () Source #
Produce input lines from a String
source
Since: 0.0.1.0
sourceText :: Monad m => Text -> ConduitT i Text m () Source #
Produce input lines from a Text
source
Since: 0.0.1.0
sourceLazyText :: Monad m => Text -> ConduitT i Text m () Source #
Produce input lines from a lazy Text
source
Since: 0.0.1.0
sourceByteString :: Monad m => ByteString -> ConduitT i Text m () Source #
Produce input lines from a ByteString
source
Since: 0.0.1.0
sourceLazyByteString :: Monad m => ByteString -> ConduitT i Text m () Source #
Produce input lines from a lazy ByteString
source
Since: 0.0.1.0
sourceHandle :: MonadIO m => Handle -> ConduitT i Text m () Source #
Produce input lines from a Handle
source
Since: 0.0.1.0
sourceFile :: MonadResource m => FilePath -> ConduitT i Text m () Source #
Produce input lines from a file source
Since: 0.0.1.0
Consumers
sinkString :: Monad m => ConduitT Text o m String Source #
Consume output lines, returning a String
Since: 0.0.1.0
sinkText :: Monad m => ConduitT Text o m Text Source #
Consume output lines, returning Text
Since: 0.0.1.0
sinkLazyText :: Monad m => ConduitT Text o m Text Source #
Consume output lines, returning lazy Text
Since: 0.0.1.0
sinkByteString :: Monad m => ConduitT Text o m ByteString Source #
Consume output lines, returning a ByteString
Since: 0.0.1.0
sinkLazyByteString :: Monad m => ConduitT Text o m ByteString Source #
Consume output lines, returning a lazy ByteString
Since: 0.0.1.0
sinkHandle :: MonadIO m => Handle -> ConduitT Text o m () Source #
Consume output lines, writing to a Handle
Since: 0.0.1.0
sinkFile :: MonadResource m => FilePath -> ConduitT Text o m () Source #
Consume output lines, writing to a file
Since: 0.0.1.0