packages feed

parcom-lib 0.2.0.0 → 0.3.0.1

raw patch · 10 files changed

+107/−5 lines, 10 filesdep +text

Dependencies added: text

Files

+ Text/Parcom/ByteString/Lazy.hs view
@@ -0,0 +1,18 @@+{-#LANGUAGE MultiParamTypeClasses #-}+module Text.Parcom.ByteString.Lazy+where++import Prelude hiding (head, null, tail)+import Data.ByteString.Lazy+import Data.Word8+import Text.Parcom.Stream+import Text.Parcom.Word8++instance Stream ByteString Word8 where+    peek = head+    atEnd = null+    consume = tail++instance Listish ByteString Word8 where+    toList = unpack+    fromList = pack
Text/Parcom/ByteString/Strict.hs view
@@ -12,3 +12,7 @@     peek = head     atEnd = null     consume = tail++instance Listish ByteString Word8 where+    toList = unpack+    fromList = pack
Text/Parcom/Core.hs view
@@ -8,12 +8,12 @@ , try, handle , notFollowedBy , (<?>), (<|>), empty-, Stream, Token+, Stream, Token, Listish ) where  import qualified Text.Parcom.Stream as Stream-import Text.Parcom.Stream (Stream, Token)+import Text.Parcom.Stream (Stream, Token, Listish) import Control.Monad (liftM, ap) import Control.Applicative import Control.Monad.Identity
Text/Parcom/Prim.hs view
@@ -1,12 +1,14 @@ module Text.Parcom.Prim ( anyToken, oneOf, eof , satisfy-, token, tokens+, token, tokens, prefix ) where  import Text.Parcom.Core import Text.Parcom.Internal+import Text.Parcom.Stream (toList, fromList)+import Control.Monad (liftM)  -- | Gets the next token from the stream anyToken :: (Monad m, Stream s t, Token t) => ParcomT s t m t@@ -40,3 +42,6 @@     c <- token x     cs <- tokens xs     return (c:cs)++prefix :: (Monad m, Stream s t, Token t, Eq t, Show t, Listish s t) => s -> ParcomT s t m s+prefix str = fromList `liftM` tokens (toList str)
Text/Parcom/Stream.hs view
@@ -21,3 +21,11 @@ instance Token Char where     isLineDelimiter '\n' = True     isLineDelimiter _ = False++class Listish s t | s -> t where+    toList :: s -> [t]+    fromList :: [t] -> s++instance Listish [a] a where+    toList = id+    fromList = id
+ Text/Parcom/Text.hs view
@@ -0,0 +1,6 @@+module Text.Parcom.Text+( module Text.Parcom.Text.Strict+)+where++import Text.Parcom.Text.Strict
+ Text/Parcom/Text/Lazy.hs view
@@ -0,0 +1,16 @@+{-#LANGUAGE MultiParamTypeClasses #-}+module Text.Parcom.Text.Lazy+where++import Prelude hiding (head, null, tail)+import Data.Text.Lazy+import Text.Parcom.Stream++instance Stream Text Char where+    peek = head+    atEnd = null+    consume = tail++instance Listish Text Char where+    toList = unpack+    fromList = pack
+ Text/Parcom/Text/Strict.hs view
@@ -0,0 +1,16 @@+{-#LANGUAGE MultiParamTypeClasses #-}+module Text.Parcom.Text.Strict+where++import Prelude hiding (head, null, tail)+import Data.Text+import Text.Parcom.Stream++instance Stream Text Char where+    peek = head+    atEnd = null+    consume = tail++instance Listish Text Char where+    toList = unpack+    fromList = pack
+ Text/Parcom/Textual.hs view
@@ -0,0 +1,16 @@+module Text.Parcom.Textual+where++import Data.String+import Text.Parcom.Prim+import Text.Parcom.Core+import Text.Parcom.Internal+import Text.Parcom.Stream (Stream, Listish)++string :: (Monad m, Stream s t, Listish s t, IsString s, Eq t, Show t, Token t) => String -> ParcomT s t m String+string str = do+    prefix $ fromString str+    return str++char :: (Monad m, Stream s t, Listish s t, IsString s, Eq t, Show t, Token t) => Char -> ParcomT s t m Char+char c = string [c] >> return c
parcom-lib.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                parcom-lib-version:             0.2.0.0+version:             0.3.0.1 synopsis:            A simple parser-combinator library, a bit like Parsec but without the frills description:         Parcom provides parser combinator functionality in a string-type-agnostic way;                      it supports strict ByteStrings (with Word8 tokens) and any list type (with@@ -20,7 +20,19 @@ cabal-version:       >=1.8  library-  exposed-modules: Text.Parcom.Stream, Text.Parcom.Core, Text.Parcom.Word8, Text.Parcom.ByteString, Text.Parcom.Internal, Text.Parcom.Combinators, Text.Parcom.Prim, Text.Parcom.ByteString.Strict+  exposed-modules: Text.Parcom.Stream+                 , Text.Parcom.Core+                 , Text.Parcom.Word8+                 , Text.Parcom.Internal+                 , Text.Parcom.Combinators+                 , Text.Parcom.Prim+                 , Text.Parcom.Textual+                 , Text.Parcom.ByteString+                 , Text.Parcom.ByteString.Strict+                 , Text.Parcom.ByteString.Lazy+                 , Text.Parcom.Text+                 , Text.Parcom.Text.Lazy+                 , Text.Parcom.Text.Strict   -- other-modules:          build-depends: base ==4.5.*                , containers ==0.4.*@@ -28,3 +40,4 @@                , word8                , mtl == 2.1.*                , transformers == 0.3.*+               , text == 0.11.*