diff options
-rw-r--r-- | Pipes/Text.hs | 30 | ||||
-rw-r--r-- | Pipes/Text/Parse.hs | 4 |
2 files changed, 15 insertions, 19 deletions
diff --git a/Pipes/Text.hs b/Pipes/Text.hs index 022855f..d811ab5 100644 --- a/Pipes/Text.hs +++ b/Pipes/Text.hs | |||
@@ -203,7 +203,7 @@ fromLazy :: (Monad m) => TL.Text -> Producer' Text m () | |||
203 | fromLazy = foldrChunks (\e a -> yield e >> a) (return ()) | 203 | fromLazy = foldrChunks (\e a -> yield e >> a) (return ()) |
204 | {-# INLINABLE fromLazy #-} | 204 | {-# INLINABLE fromLazy #-} |
205 | 205 | ||
206 | -- | Stream bytes from 'stdin' | 206 | -- | Stream text from 'stdin' |
207 | stdin :: MonadIO m => Producer' Text m () | 207 | stdin :: MonadIO m => Producer' Text m () |
208 | stdin = fromHandle IO.stdin | 208 | stdin = fromHandle IO.stdin |
209 | {-# INLINABLE stdin #-} | 209 | {-# INLINABLE stdin #-} |
@@ -486,7 +486,7 @@ null :: (Monad m) => Producer Text m () -> m Bool | |||
486 | null = P.all T.null | 486 | null = P.all T.null |
487 | {-# INLINABLE null #-} | 487 | {-# INLINABLE null #-} |
488 | 488 | ||
489 | -- | Count the number of bytes | 489 | -- | Count the number of characters in the stream |
490 | length :: (Monad m, Num n) => Producer Text m () -> m n | 490 | length :: (Monad m, Num n) => Producer Text m () -> m n |
491 | length = P.fold (\n txt -> n + fromIntegral (T.length txt)) 0 id | 491 | length = P.fold (\n txt -> n + fromIntegral (T.length txt)) 0 id |
492 | {-# INLINABLE length #-} | 492 | {-# INLINABLE length #-} |
@@ -501,7 +501,7 @@ all :: (Monad m) => (Char -> Bool) -> Producer Text m () -> m Bool | |||
501 | all predicate = P.all (T.all predicate) | 501 | all predicate = P.all (T.all predicate) |
502 | {-# INLINABLE all #-} | 502 | {-# INLINABLE all #-} |
503 | 503 | ||
504 | -- | Return the maximum 'Char' within a byte stream | 504 | -- | Return the maximum 'Char' within a text stream |
505 | maximum :: (Monad m) => Producer Text m () -> m (Maybe Char) | 505 | maximum :: (Monad m) => Producer Text m () -> m (Maybe Char) |
506 | maximum = P.fold step Nothing id | 506 | maximum = P.fold step Nothing id |
507 | where | 507 | where |
@@ -513,7 +513,7 @@ maximum = P.fold step Nothing id | |||
513 | Just c -> max c (T.maximum txt) | 513 | Just c -> max c (T.maximum txt) |
514 | {-# INLINABLE maximum #-} | 514 | {-# INLINABLE maximum #-} |
515 | 515 | ||
516 | -- | Return the minimum 'Char' within a byte stream | 516 | -- | Return the minimum 'Char' within a text stream (surely very useful!) |
517 | minimum :: (Monad m) => Producer Text m () -> m (Maybe Char) | 517 | minimum :: (Monad m) => Producer Text m () -> m (Maybe Char) |
518 | minimum = P.fold step Nothing id | 518 | minimum = P.fold step Nothing id |
519 | where | 519 | where |
@@ -532,7 +532,7 @@ find | |||
532 | find predicate p = head (p >-> filter predicate) | 532 | find predicate p = head (p >-> filter predicate) |
533 | {-# INLINABLE find #-} | 533 | {-# INLINABLE find #-} |
534 | 534 | ||
535 | -- | Index into a byte stream | 535 | -- | Index into a text stream |
536 | index | 536 | index |
537 | :: (Monad m, Integral a) | 537 | :: (Monad m, Integral a) |
538 | => a-> Producer Text m () -> m (Maybe Char) | 538 | => a-> Producer Text m () -> m (Maybe Char) |
@@ -645,8 +645,8 @@ span predicate = go | |||
645 | return (yield suffix >> p') | 645 | return (yield suffix >> p') |
646 | {-# INLINABLE span #-} | 646 | {-# INLINABLE span #-} |
647 | 647 | ||
648 | {-| Split a byte stream in two, where the first byte stream is the longest | 648 | {-| Split a text stream in two, where the first text stream is the longest |
649 | consecutive group of bytes that don't satisfy the predicate | 649 | consecutive group of characters that don't satisfy the predicate |
650 | -} | 650 | -} |
651 | break | 651 | break |
652 | :: (Monad m) | 652 | :: (Monad m) |
@@ -656,7 +656,7 @@ break | |||
656 | break predicate = span (not . predicate) | 656 | break predicate = span (not . predicate) |
657 | {-# INLINABLE break #-} | 657 | {-# INLINABLE break #-} |
658 | 658 | ||
659 | {-| Split a byte stream into sub-streams delimited by bytes that satisfy the | 659 | {-| Split a text stream into sub-streams delimited by characters that satisfy the |
660 | predicate | 660 | predicate |
661 | -} | 661 | -} |
662 | splitWith | 662 | splitWith |
@@ -693,7 +693,7 @@ split :: (Monad m) | |||
693 | split c = splitWith (c ==) | 693 | split c = splitWith (c ==) |
694 | {-# INLINABLE split #-} | 694 | {-# INLINABLE split #-} |
695 | 695 | ||
696 | {-| Group a text stream into 'FreeT'-delimited byte streams using the supplied | 696 | {-| Group a text stream into 'FreeT'-delimited text streams using the supplied |
697 | equality predicate | 697 | equality predicate |
698 | -} | 698 | -} |
699 | groupBy | 699 | groupBy |
@@ -715,17 +715,13 @@ groupBy equal p0 = PP.FreeT (go p0) | |||
715 | return $ PP.FreeT (go p'') | 715 | return $ PP.FreeT (go p'') |
716 | {-# INLINABLE groupBy #-} | 716 | {-# INLINABLE groupBy #-} |
717 | 717 | ||
718 | -- | Group a byte stream into 'FreeT'-delimited byte streams of identical bytes | 718 | -- | Group a text stream into 'FreeT'-delimited text streams of identical characters |
719 | group | 719 | group |
720 | :: (Monad m) => Producer Text m r -> FreeT (Producer Text m) m r | 720 | :: (Monad m) => Producer Text m r -> FreeT (Producer Text m) m r |
721 | group = groupBy (==) | 721 | group = groupBy (==) |
722 | {-# INLINABLE group #-} | 722 | {-# INLINABLE group #-} |
723 | 723 | ||
724 | {-| Split a byte stream into 'FreeT'-delimited lines | 724 | {-| Split a text stream into 'FreeT'-delimited lines |
725 | |||
726 | Note: This function is purely for demonstration purposes since it assumes a | ||
727 | particular encoding. You should prefer the 'Data.Text.Text' equivalent of | ||
728 | this function from the upcoming @pipes-text@ library. | ||
729 | -} | 725 | -} |
730 | lines | 726 | lines |
731 | :: (Monad m) => Producer Text m r -> FreeT (Producer Text m) m r | 727 | :: (Monad m) => Producer Text m r -> FreeT (Producer Text m) m r |
@@ -770,7 +766,7 @@ words p0 = removeEmpty (splitWith isSpace p0) | |||
770 | return (removeEmpty f') | 766 | return (removeEmpty f') |
771 | {-# INLINABLE words #-} | 767 | {-# INLINABLE words #-} |
772 | 768 | ||
773 | -- | Intersperse a 'Char' in between the bytes of the byte stream | 769 | -- | Intersperse a 'Char' in between the characters of the text stream |
774 | intersperse | 770 | intersperse |
775 | :: (Monad m) => Char -> Producer Text m r -> Producer Text m r | 771 | :: (Monad m) => Char -> Producer Text m r -> Producer Text m r |
776 | intersperse c = go0 | 772 | intersperse c = go0 |
@@ -819,7 +815,7 @@ intercalate p0 = go0 | |||
819 | go1 f' | 815 | go1 f' |
820 | {-# INLINABLE intercalate #-} | 816 | {-# INLINABLE intercalate #-} |
821 | 817 | ||
822 | {-| Join 'FreeT'-delimited lines into a byte stream | 818 | {-| Join 'FreeT'-delimited lines into a text stream |
823 | -} | 819 | -} |
824 | unlines | 820 | unlines |
825 | :: (Monad m) => FreeT (Producer Text m) m r -> Producer Text m r | 821 | :: (Monad m) => FreeT (Producer Text m) m r -> Producer Text m r |
diff --git a/Pipes/Text/Parse.hs b/Pipes/Text/Parse.hs index 8c3a13e..ed0afa1 100644 --- a/Pipes/Text/Parse.hs +++ b/Pipes/Text/Parse.hs | |||
@@ -1,4 +1,4 @@ | |||
1 | -- | Parsing utilities for characterstrings, in the style of @pipes-parse@ | 1 | -- | Parsing utilities for texts, in the style of @pipes-parse@ and @Pipes.ByteString.Parse@ |
2 | 2 | ||
3 | module Pipes.Text.Parse ( | 3 | module Pipes.Text.Parse ( |
4 | -- * Parsers | 4 | -- * Parsers |
@@ -23,7 +23,7 @@ import Prelude hiding (take, takeWhile) | |||
23 | {-| Consume the first character from a 'Text' stream | 23 | {-| Consume the first character from a 'Text' stream |
24 | 24 | ||
25 | 'next' either fails with a 'Left' if the 'Producer' has no more characters or | 25 | 'next' either fails with a 'Left' if the 'Producer' has no more characters or |
26 | succeeds with a 'Right' providing the next byte and the remainder of the | 26 | succeeds with a 'Right' providing the next character and the remainder of the |
27 | 'Producer'. | 27 | 'Producer'. |
28 | -} | 28 | -} |
29 | nextChar | 29 | nextChar |