| Copyright | Copyright (c) 2021-2025 Travis Cardwell |
|---|---|
| License | MIT |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
LiterateX
Description
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, Handles, 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)
Arguments
| :: 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
Arguments
| :: 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
Arguments
| :: 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