parsers 0.7.1 → 0.8
raw patch · 2 files changed
+12/−30 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Text.Parser.Token: identText :: (TokenParsing m, Monad m) => IdentifierStyle m -> m Text
- Text.Parser.Token: textLiteral :: TokenParsing m => m Text
- Text.Parser.Token: textLiteral' :: TokenParsing m => m Text
- Text.Parser.Token: ident :: (TokenParsing m, Monad m) => IdentifierStyle m -> m String
+ Text.Parser.Token: ident :: (TokenParsing m, Monad m, IsString s) => IdentifierStyle m -> m s
- Text.Parser.Token: stringLiteral :: TokenParsing m => m String
+ Text.Parser.Token: stringLiteral :: (TokenParsing m, IsString s) => m s
- Text.Parser.Token: stringLiteral' :: TokenParsing m => m String
+ Text.Parser.Token: stringLiteral' :: (TokenParsing m, IsString s) => m s
Files
- parsers.cabal +1/−1
- src/Text/Parser/Token.hs +11/−29
parsers.cabal view
@@ -1,6 +1,6 @@ name: parsers category: Text, Parsing-version: 0.7.1+version: 0.8 license: BSD3 cabal-version: >= 1.10 license-file: LICENSE
src/Text/Parser/Token.hs view
@@ -23,10 +23,8 @@ -- * Token Parsing whiteSpace -- :: TokenParsing m => m () , charLiteral -- :: TokenParsing m => m Char- , stringLiteral -- :: TokenParsing m => m String- , stringLiteral' -- :: TokenParsing m => m String- , textLiteral -- :: TokenParsing m => m Text- , textLiteral' -- :: TokenParsing m => m Text+ , stringLiteral -- :: (TokenParsing m, IsString s) => m s+ , stringLiteral' -- :: (TokenParsing m, IsString s) => m s , natural -- :: TokenParsing m => m Integer , integer -- :: TokenParsing m => m Integer , double -- :: TokenParsing m => m Double@@ -60,11 +58,9 @@ , integer' -- :: TokenParsing m => m Integer -- * Identifiers , IdentifierStyle(..)- , liftIdentifierStyle -- :: (MonadTrans t, Monad m) =>- -- IdentifierStyle m -> IdentifierStyle (t m)- , ident -- :: TokenParsing m => IdentifierStyle m -> m String+ , liftIdentifierStyle -- :: (MonadTrans t, Monad m) => IdentifierStyle m -> IdentifierStyle (t m)+ , ident -- :: (TokenParsing m, IsString s) => IdentifierStyle m -> m s , reserve -- :: TokenParsing m => IdentifierStyle m -> String -> m ()- , identText -- :: TokenParsing m => IdentifierStyle m -> m Text , reserveText -- :: TokenParsing m => IdentifierStyle m -> Text -> m () -- ** Lenses and Traversals , styleName@@ -94,6 +90,7 @@ import Data.HashSet (HashSet) import Data.List (foldl') import Data.Monoid+import Data.String import Data.Text hiding (empty,zip,foldl,foldl') import Text.Parser.Char import Text.Parser.Combinators@@ -121,8 +118,8 @@ -- gaps. The literal string is parsed according to the grammar rules -- defined in the Haskell report (which matches most programming -- languages quite closely).-stringLiteral :: TokenParsing m => m String-stringLiteral = token (highlight StringLiteral lit) where+stringLiteral :: (TokenParsing m, IsString s) => m s+stringLiteral = fromString <$> token (highlight StringLiteral lit) where lit = Prelude.foldr (maybe id (:)) "" <$> between (char '"') (char '"' <?> "end of string") (many stringChar) <?> "string"@@ -139,15 +136,10 @@ escapeGap = skipSome space *> (char '\\' <?> "end of string gap") {-# INLINE stringLiteral #-} --- | A version of 'stringLiteral' that returns 'Text' instead.-textLiteral :: TokenParsing m => m Text-textLiteral = pack <$> stringLiteral-{-# INLINE textLiteral #-}- -- | This token parser behaves as 'stringLiteral', but for single-quoted -- strings.-stringLiteral' :: TokenParsing m => m String-stringLiteral' = token (highlight StringLiteral lit) where+stringLiteral' :: (TokenParsing m, IsString s) => m s+stringLiteral' = fromString <$> token (highlight StringLiteral lit) where lit = Prelude.foldr (maybe id (:)) "" <$> between (char '\'') (char '\'' <?> "end of string") (many stringChar) <?> "string"@@ -164,11 +156,6 @@ escapeGap = skipSome space *> (char '\\' <?> "end of string gap") {-# INLINE stringLiteral' #-} --- | A version of 'stringLiteral'' that returns 'Text' instead.-textLiteral' :: TokenParsing m => m Text-textLiteral' = pack <$> stringLiteral'-{-# INLINE textLiteral' #-}- -- | This token parser parses a natural number (a positive whole -- number). Returns the value of the number. The number can be -- specified in 'decimal', 'hexadecimal' or@@ -518,18 +505,13 @@ {-# INLINE reserveText #-} -- | Parse a non-reserved identifier or symbol-ident :: (TokenParsing m, Monad m) => IdentifierStyle m -> m String-ident s = token $ try $ do+ident :: (TokenParsing m, Monad m, IsString s) => IdentifierStyle m -> m s+ident s = fmap fromString $ token $ try $ do name <- highlight (_styleHighlight s) ((:) <$> _styleStart s <*> many (_styleLetter s) <?> _styleName s) when (HashSet.member name (_styleReserved s)) $ unexpected $ "reserved " ++ _styleName s ++ " " ++ show name return name {-# INLINE ident #-}---- | Parse a non-reserved identifier or symbol (as 'Text').-identText :: (TokenParsing m, Monad m) => IdentifierStyle m -> m Text-identText s = pack <$> ident s-{-# INLINE identText #-} -- * Utilities