literatex-0.2.0.0: transform literate source code to Markdown
CopyrightCopyright (c) 2021 Travis Cardwell
LicenseMIT
Safe HaskellNone
LanguageHaskell2010

LiterateX

Description

This module provides high-level as well as low-level API functions for transforming literate source code.

Synopsis

Constants

version :: String Source #

LiterateX version string ("literatex-haskell X.X.X")

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 #

Transform from lazy Text to lazy Text

Since: 0.0.1.0

transformTextToHandle :: MonadIO m => SourceFormat -> Options -> Text -> Handle -> m () Source #

Transform from lazy Text to a Handle

Since: 0.0.1.0

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 #

Transform from a Handle to lazy Text

Since: 0.0.1.0

transformHandleToHandle :: MonadIO m => SourceFormat -> Options -> Handle -> Handle -> m () Source #

Transform from a Handle to a Handle

Since: 0.0.1.0

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)

runPure Source #

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

runIO Source #

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

runResource Source #

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

Transformers

transform :: Monad m => SourceFormat -> Options -> ConduitT Text Text m () Source #

Transform input lines to output lines

Since: 0.0.1.0