{-# LANGUAGE FlexibleInstances #-}
module LiterateX
(
version
, transformTextToText
, transformTextToHandle
, transformTextToFile
, transformHandleToText
, transformHandleToHandle
, transformHandleToFile
, transformFileToText
, transformFileToHandle
, transformFileToFile
, runPure
, runIO
, runResource
, sourceString
, sourceText
, sourceLazyText
, sourceByteString
, sourceLazyByteString
, sourceHandle
, sourceFile
, sinkString
, sinkText
, sinkLazyText
, sinkByteString
, sinkLazyByteString
, sinkHandle
, sinkFile
, transform
) where
import Control.Monad.IO.Class (MonadIO)
import Data.Version (showVersion)
import System.IO (Handle)
import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy as BSL
import qualified Conduit as C
import Data.Conduit ((.|))
import qualified Data.Conduit.Combinators as CC
import qualified Data.Conduit.List as CL
import qualified Data.Text as T
import qualified Data.Text.Encoding as TE
import qualified Data.Text.Encoding.Error as TEE
import qualified Data.Text.Lazy as TL
import UnliftIO (MonadUnliftIO)
import qualified LiterateX.Parser as Parser
import qualified LiterateX.Renderer as Renderer
import LiterateX.Types (SourceFormat)
import qualified Paths_literatex as Project
version :: String
version :: String
version = String
"literatex-haskell " String -> String -> String
forall a. [a] -> [a] -> [a]
++ Version -> String
showVersion Version
Project.version
transformTextToText
:: SourceFormat
-> Renderer.Options
-> TL.Text
-> TL.Text
transformTextToText :: SourceFormat -> Options -> Text -> Text
transformTextToText SourceFormat
sourceFormat Options
rendererOpts Text
source =
SourceFormat
-> Options
-> ConduitT () Text Identity ()
-> ConduitT Text Void Identity Text
-> Text
forall r.
SourceFormat
-> Options
-> ConduitT () Text Identity ()
-> ConduitT Text Void Identity r
-> r
runPure SourceFormat
sourceFormat Options
rendererOpts (Text -> ConduitT () Text Identity ()
forall (m :: * -> *) i. Monad m => Text -> ConduitT i Text m ()
sourceLazyText Text
source) ConduitT Text Void Identity Text
forall (m :: * -> *) o. Monad m => ConduitT Text o m Text
sinkLazyText
transformTextToHandle
:: MonadIO m
=> SourceFormat
-> Renderer.Options
-> TL.Text
-> Handle
-> m ()
transformTextToHandle :: SourceFormat -> Options -> Text -> Handle -> m ()
transformTextToHandle SourceFormat
sourceFormat Options
rendererOpts Text
source Handle
target =
SourceFormat
-> Options
-> ConduitT () Text m ()
-> ConduitT Text Void m ()
-> m ()
forall (m :: * -> *) r.
MonadIO m =>
SourceFormat
-> Options
-> ConduitT () Text m ()
-> ConduitT Text Void m r
-> m r
runIO SourceFormat
sourceFormat Options
rendererOpts
(Text -> ConduitT () Text m ()
forall (m :: * -> *) i. Monad m => Text -> ConduitT i Text m ()
sourceLazyText Text
source)
(Handle -> ConduitT Text Void m ()
forall (m :: * -> *) o. MonadIO m => Handle -> ConduitT Text o m ()
sinkHandle Handle
target)
transformTextToFile
:: MonadUnliftIO m
=> SourceFormat
-> Renderer.Options
-> TL.Text
-> FilePath
-> m ()
transformTextToFile :: SourceFormat -> Options -> Text -> String -> m ()
transformTextToFile SourceFormat
sourceFormat Options
rendererOpts Text
source String
target =
SourceFormat
-> Options
-> ConduitT () Text (ResourceT m) ()
-> ConduitT Text Void (ResourceT m) ()
-> m ()
forall (m :: * -> *) r.
MonadUnliftIO m =>
SourceFormat
-> Options
-> ConduitT () Text (ResourceT m) ()
-> ConduitT Text Void (ResourceT m) r
-> m r
runResource SourceFormat
sourceFormat Options
rendererOpts
(Text -> ConduitT () Text (ResourceT m) ()
forall (m :: * -> *) i. Monad m => Text -> ConduitT i Text m ()
sourceLazyText Text
source)
(String -> ConduitT Text Void (ResourceT m) ()
forall (m :: * -> *) o.
MonadResource m =>
String -> ConduitT Text o m ()
sinkFile String
target)
transformHandleToText
:: MonadIO m
=> SourceFormat
-> Renderer.Options
-> Handle
-> m TL.Text
transformHandleToText :: SourceFormat -> Options -> Handle -> m Text
transformHandleToText SourceFormat
sourceFormat Options
rendererOpts Handle
source =
SourceFormat
-> Options
-> ConduitT () Text m ()
-> ConduitT Text Void m Text
-> m Text
forall (m :: * -> *) r.
MonadIO m =>
SourceFormat
-> Options
-> ConduitT () Text m ()
-> ConduitT Text Void m r
-> m r
runIO SourceFormat
sourceFormat Options
rendererOpts (Handle -> ConduitT () Text m ()
forall (m :: * -> *) i. MonadIO m => Handle -> ConduitT i Text m ()
sourceHandle Handle
source) ConduitT Text Void m Text
forall (m :: * -> *) o. Monad m => ConduitT Text o m Text
sinkLazyText
transformHandleToHandle
:: MonadIO m
=> SourceFormat
-> Renderer.Options
-> Handle
-> Handle
-> m ()
transformHandleToHandle :: SourceFormat -> Options -> Handle -> Handle -> m ()
transformHandleToHandle SourceFormat
sourceFormat Options
rendererOpts Handle
source Handle
target =
SourceFormat
-> Options
-> ConduitT () Text m ()
-> ConduitT Text Void m ()
-> m ()
forall (m :: * -> *) r.
MonadIO m =>
SourceFormat
-> Options
-> ConduitT () Text m ()
-> ConduitT Text Void m r
-> m r
runIO SourceFormat
sourceFormat Options
rendererOpts (Handle -> ConduitT () Text m ()
forall (m :: * -> *) i. MonadIO m => Handle -> ConduitT i Text m ()
sourceHandle Handle
source) (Handle -> ConduitT Text Void m ()
forall (m :: * -> *) o. MonadIO m => Handle -> ConduitT Text o m ()
sinkHandle Handle
target)
transformHandleToFile
:: MonadUnliftIO m
=> SourceFormat
-> Renderer.Options
-> Handle
-> FilePath
-> m ()
transformHandleToFile :: SourceFormat -> Options -> Handle -> String -> m ()
transformHandleToFile SourceFormat
sourceFormat Options
rendererOpts Handle
source String
target =
SourceFormat
-> Options
-> ConduitT () Text (ResourceT m) ()
-> ConduitT Text Void (ResourceT m) ()
-> m ()
forall (m :: * -> *) r.
MonadUnliftIO m =>
SourceFormat
-> Options
-> ConduitT () Text (ResourceT m) ()
-> ConduitT Text Void (ResourceT m) r
-> m r
runResource SourceFormat
sourceFormat Options
rendererOpts
(Handle -> ConduitT () Text (ResourceT m) ()
forall (m :: * -> *) i. MonadIO m => Handle -> ConduitT i Text m ()
sourceHandle Handle
source)
(String -> ConduitT Text Void (ResourceT m) ()
forall (m :: * -> *) o.
MonadResource m =>
String -> ConduitT Text o m ()
sinkFile String
target)
transformFileToText
:: MonadUnliftIO m
=> SourceFormat
-> Renderer.Options
-> FilePath
-> m TL.Text
transformFileToText :: SourceFormat -> Options -> String -> m Text
transformFileToText SourceFormat
sourceFormat Options
rendererOpts String
source =
SourceFormat
-> Options
-> ConduitT () Text (ResourceT m) ()
-> ConduitT Text Void (ResourceT m) Text
-> m Text
forall (m :: * -> *) r.
MonadUnliftIO m =>
SourceFormat
-> Options
-> ConduitT () Text (ResourceT m) ()
-> ConduitT Text Void (ResourceT m) r
-> m r
runResource SourceFormat
sourceFormat Options
rendererOpts (String -> ConduitT () Text (ResourceT m) ()
forall (m :: * -> *) i.
MonadResource m =>
String -> ConduitT i Text m ()
sourceFile String
source) ConduitT Text Void (ResourceT m) Text
forall (m :: * -> *) o. Monad m => ConduitT Text o m Text
sinkLazyText
transformFileToHandle
:: MonadUnliftIO m
=> SourceFormat
-> Renderer.Options
-> FilePath
-> Handle
-> m ()
transformFileToHandle :: SourceFormat -> Options -> String -> Handle -> m ()
transformFileToHandle SourceFormat
sourceFormat Options
rendererOpts String
source Handle
target =
SourceFormat
-> Options
-> ConduitT () Text (ResourceT m) ()
-> ConduitT Text Void (ResourceT m) ()
-> m ()
forall (m :: * -> *) r.
MonadUnliftIO m =>
SourceFormat
-> Options
-> ConduitT () Text (ResourceT m) ()
-> ConduitT Text Void (ResourceT m) r
-> m r
runResource SourceFormat
sourceFormat Options
rendererOpts
(String -> ConduitT () Text (ResourceT m) ()
forall (m :: * -> *) i.
MonadResource m =>
String -> ConduitT i Text m ()
sourceFile String
source)
(Handle -> ConduitT Text Void (ResourceT m) ()
forall (m :: * -> *) o. MonadIO m => Handle -> ConduitT Text o m ()
sinkHandle Handle
target)
transformFileToFile
:: MonadUnliftIO m
=> SourceFormat
-> Renderer.Options
-> FilePath
-> FilePath
-> m ()
transformFileToFile :: SourceFormat -> Options -> String -> String -> m ()
transformFileToFile SourceFormat
sourceFormat Options
rendererOpts String
source String
target =
SourceFormat
-> Options
-> ConduitT () Text (ResourceT m) ()
-> ConduitT Text Void (ResourceT m) ()
-> m ()
forall (m :: * -> *) r.
MonadUnliftIO m =>
SourceFormat
-> Options
-> ConduitT () Text (ResourceT m) ()
-> ConduitT Text Void (ResourceT m) r
-> m r
runResource SourceFormat
sourceFormat Options
rendererOpts
(String -> ConduitT () Text (ResourceT m) ()
forall (m :: * -> *) i.
MonadResource m =>
String -> ConduitT i Text m ()
sourceFile String
source)
(String -> ConduitT Text Void (ResourceT m) ()
forall (m :: * -> *) o.
MonadResource m =>
String -> ConduitT Text o m ()
sinkFile String
target)
runPure
:: SourceFormat
-> Renderer.Options
-> C.ConduitT () T.Text C.Identity ()
-> C.ConduitT T.Text C.Void C.Identity r
-> r
runPure :: SourceFormat
-> Options
-> ConduitT () Text Identity ()
-> ConduitT Text Void Identity r
-> r
runPure SourceFormat
sourceFormat Options
rendererOpts ConduitT () Text Identity ()
source ConduitT Text Void Identity r
sink = ConduitT () Void Identity r -> r
forall r. ConduitT () Void Identity r -> r
C.runConduitPure (ConduitT () Void Identity r -> r)
-> ConduitT () Void Identity r -> r
forall a b. (a -> b) -> a -> b
$
ConduitT () Text Identity ()
source ConduitT () Text Identity ()
-> ConduitT Text Void Identity r -> ConduitT () Void Identity r
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| SourceFormat -> Options -> ConduitT Text Text Identity ()
forall (m :: * -> *).
Monad m =>
SourceFormat -> Options -> ConduitT Text Text m ()
transform SourceFormat
sourceFormat Options
rendererOpts ConduitT Text Text Identity ()
-> ConduitT Text Void Identity r -> ConduitT Text Void Identity r
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitT Text Void Identity r
sink
runIO
:: MonadIO m
=> SourceFormat
-> Renderer.Options
-> C.ConduitT () T.Text m ()
-> C.ConduitT T.Text C.Void m r
-> m r
runIO :: SourceFormat
-> Options
-> ConduitT () Text m ()
-> ConduitT Text Void m r
-> m r
runIO SourceFormat
sourceFormat Options
rendererOpts ConduitT () Text m ()
source ConduitT Text Void m r
sink = ConduitT () Void m r -> m r
forall (m :: * -> *) r. Monad m => ConduitT () Void m r -> m r
C.runConduit (ConduitT () Void m r -> m r) -> ConduitT () Void m r -> m r
forall a b. (a -> b) -> a -> b
$
ConduitT () Text m ()
source ConduitT () Text m ()
-> ConduitT Text Void m r -> ConduitT () Void m r
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| SourceFormat -> Options -> ConduitT Text Text m ()
forall (m :: * -> *).
Monad m =>
SourceFormat -> Options -> ConduitT Text Text m ()
transform SourceFormat
sourceFormat Options
rendererOpts ConduitT Text Text m ()
-> ConduitT Text Void m r -> ConduitT Text Void m r
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitT Text Void m r
sink
runResource
:: MonadUnliftIO m
=> SourceFormat
-> Renderer.Options
-> C.ConduitT () T.Text (C.ResourceT m) ()
-> C.ConduitT T.Text C.Void (C.ResourceT m) r
-> m r
runResource :: SourceFormat
-> Options
-> ConduitT () Text (ResourceT m) ()
-> ConduitT Text Void (ResourceT m) r
-> m r
runResource SourceFormat
sourceFormat Options
rendererOpts ConduitT () Text (ResourceT m) ()
source ConduitT Text Void (ResourceT m) r
sink = ConduitT () Void (ResourceT m) r -> m r
forall (m :: * -> *) r.
MonadUnliftIO m =>
ConduitT () Void (ResourceT m) r -> m r
C.runConduitRes (ConduitT () Void (ResourceT m) r -> m r)
-> ConduitT () Void (ResourceT m) r -> m r
forall a b. (a -> b) -> a -> b
$
ConduitT () Text (ResourceT m) ()
source ConduitT () Text (ResourceT m) ()
-> ConduitT Text Void (ResourceT m) r
-> ConduitT () Void (ResourceT m) r
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| SourceFormat -> Options -> ConduitT Text Text (ResourceT m) ()
forall (m :: * -> *).
Monad m =>
SourceFormat -> Options -> ConduitT Text Text m ()
transform SourceFormat
sourceFormat Options
rendererOpts ConduitT Text Text (ResourceT m) ()
-> ConduitT Text Void (ResourceT m) r
-> ConduitT Text Void (ResourceT m) r
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitT Text Void (ResourceT m) r
sink
sourceString
:: Monad m
=> String
-> C.ConduitT i T.Text m ()
sourceString :: String -> ConduitT i Text m ()
sourceString = [Text] -> ConduitT i Text m ()
forall (m :: * -> *) mono i.
(Monad m, MonoFoldable mono) =>
mono -> ConduitT i (Element mono) m ()
CC.yieldMany ([Text] -> ConduitT i Text m ())
-> (String -> [Text]) -> String -> ConduitT i Text m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String -> Text) -> [String] -> [Text]
forall a b. (a -> b) -> [a] -> [b]
map String -> Text
T.pack ([String] -> [Text]) -> (String -> [String]) -> String -> [Text]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> [String]
lines
sourceText
:: Monad m
=> T.Text
-> C.ConduitT i T.Text m ()
sourceText :: Text -> ConduitT i Text m ()
sourceText Text
source = Text -> ConduitT i Text m ()
forall (m :: * -> *) o i. Monad m => o -> ConduitT i o m ()
C.yield Text
source ConduitT i Text m ()
-> ConduitM Text Text m () -> ConduitT i Text m ()
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitM Text Text m ()
forall (m :: * -> *) seq.
(Monad m, IsSequence seq, Element seq ~ Char) =>
ConduitT seq seq m ()
CC.linesUnbounded
sourceLazyText
:: Monad m
=> TL.Text
-> C.ConduitT i T.Text m ()
sourceLazyText :: Text -> ConduitT i Text m ()
sourceLazyText Text
source = Text -> ConduitT i Text m ()
forall (m :: * -> *) lazy strict i.
(Monad m, LazySequence lazy strict) =>
lazy -> ConduitT i strict m ()
CC.sourceLazy Text
source ConduitT i Text m ()
-> ConduitM Text Text m () -> ConduitT i Text m ()
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitM Text Text m ()
forall (m :: * -> *) seq.
(Monad m, IsSequence seq, Element seq ~ Char) =>
ConduitT seq seq m ()
CC.linesUnbounded
sourceByteString
:: Monad m
=> BS.ByteString
-> C.ConduitT i T.Text m ()
sourceByteString :: ByteString -> ConduitT i Text m ()
sourceByteString ByteString
source =
ByteString -> ConduitT i ByteString m ()
forall (m :: * -> *) o i. Monad m => o -> ConduitT i o m ()
C.yield ByteString
source ConduitT i ByteString m ()
-> ConduitM ByteString Text m () -> ConduitT i Text m ()
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitT ByteString ByteString m ()
forall (m :: * -> *) seq.
(Monad m, IsSequence seq, Element seq ~ Word8) =>
ConduitT seq seq m ()
CC.linesUnboundedAscii ConduitT ByteString ByteString m ()
-> ConduitM ByteString Text m () -> ConduitM ByteString Text m ()
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitM ByteString Text m ()
forall (m :: * -> *). Monad m => ConduitT ByteString Text m ()
decodeUtf8LinesLenient
sourceLazyByteString
:: Monad m
=> BSL.ByteString
-> C.ConduitT i T.Text m ()
sourceLazyByteString :: ByteString -> ConduitT i Text m ()
sourceLazyByteString ByteString
source =
ByteString -> ConduitT i ByteString m ()
forall (m :: * -> *) lazy strict i.
(Monad m, LazySequence lazy strict) =>
lazy -> ConduitT i strict m ()
CC.sourceLazy ByteString
source ConduitT i ByteString m ()
-> ConduitM ByteString Text m () -> ConduitT i Text m ()
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitT ByteString ByteString m ()
forall (m :: * -> *) seq.
(Monad m, IsSequence seq, Element seq ~ Word8) =>
ConduitT seq seq m ()
CC.linesUnboundedAscii ConduitT ByteString ByteString m ()
-> ConduitM ByteString Text m () -> ConduitM ByteString Text m ()
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitM ByteString Text m ()
forall (m :: * -> *). Monad m => ConduitT ByteString Text m ()
decodeUtf8LinesLenient
sourceHandle
:: MonadIO m
=> Handle
-> C.ConduitT i T.Text m ()
sourceHandle :: Handle -> ConduitT i Text m ()
sourceHandle Handle
source =
Handle -> ConduitT i ByteString m ()
forall (m :: * -> *) i.
MonadIO m =>
Handle -> ConduitT i ByteString m ()
CC.sourceHandle Handle
source ConduitT i ByteString m ()
-> ConduitM ByteString Text m () -> ConduitT i Text m ()
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitT ByteString ByteString m ()
forall (m :: * -> *) seq.
(Monad m, IsSequence seq, Element seq ~ Word8) =>
ConduitT seq seq m ()
CC.linesUnboundedAscii ConduitT ByteString ByteString m ()
-> ConduitM ByteString Text m () -> ConduitM ByteString Text m ()
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitM ByteString Text m ()
forall (m :: * -> *). Monad m => ConduitT ByteString Text m ()
decodeUtf8LinesLenient
sourceFile
:: C.MonadResource m
=> FilePath
-> C.ConduitT i T.Text m ()
sourceFile :: String -> ConduitT i Text m ()
sourceFile String
source =
String -> ConduitT i ByteString m ()
forall (m :: * -> *) i.
MonadResource m =>
String -> ConduitT i ByteString m ()
CC.sourceFile String
source ConduitT i ByteString m ()
-> ConduitM ByteString Text m () -> ConduitT i Text m ()
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitT ByteString ByteString m ()
forall (m :: * -> *) seq.
(Monad m, IsSequence seq, Element seq ~ Word8) =>
ConduitT seq seq m ()
CC.linesUnboundedAscii ConduitT ByteString ByteString m ()
-> ConduitM ByteString Text m () -> ConduitM ByteString Text m ()
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitM ByteString Text m ()
forall (m :: * -> *). Monad m => ConduitT ByteString Text m ()
decodeUtf8LinesLenient
sinkString
:: Monad m
=> C.ConduitT T.Text o m String
sinkString :: ConduitT Text o m String
sinkString = (Text -> String)
-> ConduitT Text o m Text -> ConduitT Text o m String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Text -> String
TL.unpack (ConduitT Text o m Text -> ConduitT Text o m String)
-> ConduitT Text o m Text -> ConduitT Text o m String
forall a b. (a -> b) -> a -> b
$ ConduitT Text Text m ()
forall (m :: * -> *) seq.
(Monad m, IsSequence seq, Element seq ~ Char) =>
ConduitT seq seq m ()
CC.unlines ConduitT Text Text m ()
-> ConduitT Text o m Text -> ConduitT Text o m Text
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitT Text o m Text
forall (m :: * -> *) lazy strict o.
(Monad m, LazySequence lazy strict) =>
ConduitT strict o m lazy
CC.sinkLazy
sinkText
:: Monad m
=> C.ConduitT T.Text o m T.Text
sinkText :: ConduitT Text o m Text
sinkText = (Text -> Text) -> ConduitT Text o m Text -> ConduitT Text o m Text
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Text -> Text
TL.toStrict (ConduitT Text o m Text -> ConduitT Text o m Text)
-> ConduitT Text o m Text -> ConduitT Text o m Text
forall a b. (a -> b) -> a -> b
$ ConduitT Text Text m ()
forall (m :: * -> *) seq.
(Monad m, IsSequence seq, Element seq ~ Char) =>
ConduitT seq seq m ()
CC.unlines ConduitT Text Text m ()
-> ConduitT Text o m Text -> ConduitT Text o m Text
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitT Text o m Text
forall (m :: * -> *) lazy strict o.
(Monad m, LazySequence lazy strict) =>
ConduitT strict o m lazy
CC.sinkLazy
sinkLazyText
:: Monad m
=> C.ConduitT T.Text o m TL.Text
sinkLazyText :: ConduitT Text o m Text
sinkLazyText = ConduitT Text Text m ()
forall (m :: * -> *) seq.
(Monad m, IsSequence seq, Element seq ~ Char) =>
ConduitT seq seq m ()
CC.unlines ConduitT Text Text m ()
-> ConduitT Text o m Text -> ConduitT Text o m Text
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitT Text o m Text
forall (m :: * -> *) lazy strict o.
(Monad m, LazySequence lazy strict) =>
ConduitT strict o m lazy
CC.sinkLazy
sinkByteString
:: Monad m
=> C.ConduitT T.Text o m BS.ByteString
sinkByteString :: ConduitT Text o m ByteString
sinkByteString =
(ByteString -> ByteString)
-> ConduitT Text o m ByteString -> ConduitT Text o m ByteString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> ByteString
BSL.toStrict (ConduitT Text o m ByteString -> ConduitT Text o m ByteString)
-> ConduitT Text o m ByteString -> ConduitT Text o m ByteString
forall a b. (a -> b) -> a -> b
$ ConduitT Text Text m ()
forall (m :: * -> *) seq.
(Monad m, IsSequence seq, Element seq ~ Char) =>
ConduitT seq seq m ()
CC.unlines ConduitT Text Text m ()
-> ConduitT Text o m ByteString -> ConduitT Text o m ByteString
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitT Text ByteString m ()
forall (m :: * -> *) text binary.
(Monad m, Utf8 text binary) =>
ConduitT text binary m ()
CC.encodeUtf8 ConduitT Text ByteString m ()
-> ConduitM ByteString o m ByteString
-> ConduitT Text o m ByteString
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitM ByteString o m ByteString
forall (m :: * -> *) lazy strict o.
(Monad m, LazySequence lazy strict) =>
ConduitT strict o m lazy
CC.sinkLazy
sinkLazyByteString
:: Monad m
=> C.ConduitT T.Text o m BSL.ByteString
sinkLazyByteString :: ConduitT Text o m ByteString
sinkLazyByteString = ConduitT Text Text m ()
forall (m :: * -> *) seq.
(Monad m, IsSequence seq, Element seq ~ Char) =>
ConduitT seq seq m ()
CC.unlines ConduitT Text Text m ()
-> ConduitT Text o m ByteString -> ConduitT Text o m ByteString
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitT Text ByteString m ()
forall (m :: * -> *) text binary.
(Monad m, Utf8 text binary) =>
ConduitT text binary m ()
CC.encodeUtf8 ConduitT Text ByteString m ()
-> ConduitM ByteString o m ByteString
-> ConduitT Text o m ByteString
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitM ByteString o m ByteString
forall (m :: * -> *) lazy strict o.
(Monad m, LazySequence lazy strict) =>
ConduitT strict o m lazy
CC.sinkLazy
sinkHandle
:: MonadIO m
=> Handle
-> C.ConduitT T.Text o m ()
sinkHandle :: Handle -> ConduitT Text o m ()
sinkHandle Handle
target = ConduitT Text ByteString m ()
forall (m :: * -> *) text binary.
(Monad m, Utf8 text binary) =>
ConduitT text binary m ()
CC.encodeUtf8 ConduitT Text ByteString m ()
-> ConduitM ByteString o m () -> ConduitT Text o m ()
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitT ByteString ByteString m ()
forall (m :: * -> *) seq.
(Monad m, IsSequence seq, Element seq ~ Word8) =>
ConduitT seq seq m ()
CC.unlinesAscii ConduitT ByteString ByteString m ()
-> ConduitM ByteString o m () -> ConduitM ByteString o m ()
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| Handle -> ConduitM ByteString o m ()
forall (m :: * -> *) o.
MonadIO m =>
Handle -> ConduitT ByteString o m ()
CC.sinkHandle Handle
target
sinkFile
:: C.MonadResource m
=> FilePath
-> C.ConduitT T.Text o m ()
sinkFile :: String -> ConduitT Text o m ()
sinkFile String
target = ConduitT Text ByteString m ()
forall (m :: * -> *) text binary.
(Monad m, Utf8 text binary) =>
ConduitT text binary m ()
CC.encodeUtf8 ConduitT Text ByteString m ()
-> ConduitM ByteString o m () -> ConduitT Text o m ()
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| ConduitT ByteString ByteString m ()
forall (m :: * -> *) seq.
(Monad m, IsSequence seq, Element seq ~ Word8) =>
ConduitT seq seq m ()
CC.unlinesAscii ConduitT ByteString ByteString m ()
-> ConduitM ByteString o m () -> ConduitM ByteString o m ()
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| String -> ConduitM ByteString o m ()
forall (m :: * -> *) o.
MonadResource m =>
String -> ConduitT ByteString o m ()
CC.sinkFile String
target
transform
:: Monad m
=> SourceFormat
-> Renderer.Options
-> C.ConduitT T.Text T.Text m ()
transform :: SourceFormat -> Options -> ConduitT Text Text m ()
transform SourceFormat
sourceFormat Options
rendererOpts
= SourceFormat -> ConduitT Text SourceLine m ()
forall (m :: * -> *).
Monad m =>
SourceFormat -> ConduitT Text SourceLine m ()
Parser.parse SourceFormat
sourceFormat
ConduitT Text SourceLine m ()
-> ConduitM SourceLine Text m () -> ConduitT Text Text m ()
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| (SourceLine -> Int -> (Int, [(Int, SourceLine)]))
-> Int -> ConduitT SourceLine (Int, SourceLine) m ()
forall (m :: * -> *) a accum b.
Monad m =>
(a -> accum -> (accum, [b])) -> accum -> ConduitT a b m ()
CL.concatMapAccum (\SourceLine
x Int
n -> (Int
n Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1, [(Int
n, SourceLine
x)])) Int
1
ConduitT SourceLine (Int, SourceLine) m ()
-> ConduitM (Int, SourceLine) Text m ()
-> ConduitM SourceLine Text m ()
forall (m :: * -> *) a b c r.
Monad m =>
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
.| Options -> ConduitM (Int, SourceLine) Text m ()
forall (m :: * -> *).
Monad m =>
Options -> ConduitT (Int, SourceLine) Text m ()
Renderer.render Options
rendererOpts
decodeUtf8LinesLenient
:: Monad m
=> C.ConduitT BS.ByteString T.Text m ()
decodeUtf8LinesLenient :: ConduitT ByteString Text m ()
decodeUtf8LinesLenient =
(ByteString -> ConduitT ByteString Text m ())
-> ConduitT ByteString Text m ()
forall (m :: * -> *) i o r.
Monad m =>
(i -> ConduitT i o m r) -> ConduitT i o m ()
C.awaitForever ((ByteString -> ConduitT ByteString Text m ())
-> ConduitT ByteString Text m ())
-> (ByteString -> ConduitT ByteString Text m ())
-> ConduitT ByteString Text m ()
forall a b. (a -> b) -> a -> b
$ Text -> ConduitT ByteString Text m ()
forall (m :: * -> *) o i. Monad m => o -> ConduitT i o m ()
C.yield (Text -> ConduitT ByteString Text m ())
-> (ByteString -> Text)
-> ByteString
-> ConduitT ByteString Text m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. OnDecodeError -> ByteString -> Text
TE.decodeUtf8With OnDecodeError
TEE.lenientDecode