input-parsers 0.2.3.2 → 0.3
raw patch · 7 files changed
+39/−45 lines, 7 filesdep ~monoid-subclassesPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: monoid-subclasses
API changes (from Hackage documentation)
- Text.Parser.Input: type family ParserPosition m;
+ Text.Parser.Input: type ParserInput m;
Files
- CHANGELOG.md +10/−0
- input-parsers.cabal +3/−2
- src/Text/Parser/Deterministic.hs +2/−21
- src/Text/Parser/Input.hs +10/−13
- src/Text/Parser/Input/Position.hs +8/−6
- src/Text/Parser/Internal.hs +5/−2
- src/Text/Parser/Wrapper.hs +1/−1
CHANGELOG.md view
@@ -1,5 +1,15 @@ # Revision history for input-parsers +## 0.3 -- 2022-10-02++* Dropped support for GHC < 8.4+* Incremented the upper bound of the `monoid-subclasses` dependency.+* Added `-Wall` and fixed all warnings.++## 0.2.3.2 -- 2022-03-25++* Incremented the upper bound of the `text` dependency.+ ## 0.2.3.1 -- 2021-11-25 * Incremented the upper bound of the optional `attoparsec` dependency.
input-parsers.cabal view
@@ -1,6 +1,6 @@ cabal-version: >=1.10 name: input-parsers-version: 0.2.3.2+version: 0.3 synopsis: Extension of the parsers library with more capability and efficiency description: Extended version of the parsers library, with the additional classes providing more@@ -38,7 +38,7 @@ Text.Parser.Wrapper other-modules: Text.Parser.Internal build-depends: base >=4.9 && <5, bytestring >=0.10 && <0.12, text >=1.2 && <2.1,- monoid-subclasses >= 1.0 && < 1.2, parsers >= 0.12 && < 0.13,+ monoid-subclasses >= 1.0 && < 1.3, parsers >= 0.12 && < 0.13, transformers >=0.2 && <0.6 if flag(binary) build-depends: binary >= 0.7.2 && < 1@@ -48,3 +48,4 @@ build-depends: attoparsec >= 0.12.1.4 && < 0.15, bytestring >= 0.9 && < 0.12, text >= 0.1 && < 2.1 hs-source-dirs: src default-language: Haskell2010+ GHC-options: -Wall
src/Text/Parser/Deterministic.hs view
@@ -6,8 +6,7 @@ module Text.Parser.Deterministic where -import Control.Applicative (Applicative ((<*>), pure), Alternative ((<|>), many, some), liftA2, optional)-import Control.Arrow (first)+import Control.Applicative (Alternative ((<|>), many, some), liftA2, optional) import Control.Monad (MonadPlus, void) import Control.Monad.Trans.Identity (IdentityT(..)) import Control.Monad.Trans.Reader (ReaderT(..), mapReaderT)@@ -17,17 +16,10 @@ import qualified Control.Monad.Trans.State.Strict as Strict (StateT(StateT)) import qualified Control.Monad.Trans.RWS.Lazy as Lazy (RWST(RWST)) import qualified Control.Monad.Trans.RWS.Strict as Strict (RWST(RWST))-import Data.Functor ((<$>))-import qualified Data.List as List-import Data.Monoid (Monoid, mappend, mempty)-import Data.String (IsString (fromString)) import Text.ParserCombinators.ReadP (ReadP) import qualified Text.ParserCombinators.ReadP as ReadP -import Text.Parser.Char (CharParsing)-import Text.Parser.Combinators (Parsing, count, eof, notFollowedBy, try, unexpected)-import Text.Parser.LookAhead (LookAheadParsing, lookAhead)-import qualified Text.Parser.Char as Char+import Text.Parser.Combinators (Parsing, notFollowedBy, try) import Text.Parser.Internal (mapLazyWriterT, mapStrictWriterT, mapLazyStateT, mapStrictStateT,@@ -35,22 +27,11 @@ import Text.Parser.Wrapper (Lazy(..), Strict(..)) #ifdef MIN_VERSION_attoparsec-import Data.ByteString (ByteString)-import Data.Text (Text)-import qualified Data.ByteString as ByteString-import qualified Data.ByteString.Char8 as ByteString.Char8-import qualified Data.Text as Text- import qualified Data.Attoparsec.ByteString as Attoparsec-import qualified Data.Attoparsec.ByteString.Char8 as Attoparsec.Char8 import qualified Data.Attoparsec.Text as Attoparsec.Text #endif #ifdef MIN_VERSION_binary-import Data.ByteString (ByteString)-import qualified Data.ByteString as ByteString-import qualified Data.ByteString.Lazy as Lazy- import qualified Data.Binary.Get as Binary #endif
src/Text/Parser/Input.hs view
@@ -4,6 +4,7 @@ {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-} #if defined (__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ < 802 {-# LANGUAGE TypeSynonymInstances #-}@@ -14,30 +15,26 @@ module Text.Parser.Input (InputParsing(..), InputCharParsing(..), ConsumedInputParsing(..), Lazy(..), Strict(..)) where -import Control.Applicative (Applicative ((<*>), pure), Alternative ((<|>), empty), (<**>))+import Control.Applicative (Alternative ((<|>), empty)) import Control.Monad (MonadPlus, void) import Control.Monad.Trans.Class (lift) import Control.Monad.Trans.Identity (IdentityT(..)) import Control.Monad.Trans.Reader (ReaderT(..), mapReaderT)-import qualified Control.Monad.Trans.Writer.Lazy as Lazy (WriterT(WriterT))-import qualified Control.Monad.Trans.Writer.Strict as Strict (WriterT(WriterT))-import qualified Control.Monad.Trans.State.Lazy as Lazy (StateT(StateT))-import qualified Control.Monad.Trans.State.Strict as Strict (StateT(StateT))-import qualified Control.Monad.Trans.RWS.Lazy as Lazy (RWST(RWST))-import qualified Control.Monad.Trans.RWS.Strict as Strict (RWST(RWST))+import qualified Control.Monad.Trans.Writer.Lazy as Lazy (WriterT)+import qualified Control.Monad.Trans.Writer.Strict as Strict (WriterT)+import qualified Control.Monad.Trans.State.Lazy as Lazy (StateT)+import qualified Control.Monad.Trans.State.Strict as Strict (StateT)+import qualified Control.Monad.Trans.RWS.Lazy as Lazy (RWST)+import qualified Control.Monad.Trans.RWS.Strict as Strict (RWST) import Data.ByteString (ByteString) import qualified Data.ByteString as ByteString import qualified Data.ByteString.Lazy as Lazy-import Data.Functor ((<$>))-import qualified Data.List as List import Data.Ord (Down)-import Data.Monoid (Monoid, (<>))-import Data.String (IsString (fromString)) import Text.ParserCombinators.ReadP (ReadP) import qualified Text.ParserCombinators.ReadP as ReadP import Text.Parser.Char (CharParsing)-import Text.Parser.Combinators (Parsing, count, eof, notFollowedBy, try, unexpected)+import Text.Parser.Combinators (count, eof, notFollowedBy, try, unexpected) import Text.Parser.LookAhead (LookAheadParsing, lookAhead) import qualified Text.Parser.Char as Char @@ -68,7 +65,7 @@ import qualified Data.Binary.Get as Binary #endif -import Text.Parser.Input.Position (Position, fromEnd, fromStart)+import Text.Parser.Input.Position (fromEnd, fromStart) import Text.Parser.Internal (mapLazyWriterT, mapStrictWriterT, mapLazyStateT, mapStrictStateT, mapLazyRWST, mapStrictRWST)
src/Text/Parser/Input/Position.hs view
@@ -6,7 +6,6 @@ import Data.Char (isSpace) import Data.String (IsString(fromString))-import Data.Monoid ((<>)) import Data.Ord (Down(Down)) import qualified Data.Monoid.Factorial as Factorial import qualified Data.Monoid.Textual as Textual@@ -32,8 +31,11 @@ instance Position a => Position (Down a) where distance (Down p1) (Down p2) = distance p2 p1- move distance (Down p) = Down (move (negate distance) p)+ move dist (Down p) = Down (move (negate dist) p) offset wholeInput (Down p) = Factorial.length wholeInput - offset wholeInput p+ {-# INLINE distance #-}+ {-# INLINE move #-}+ {-# INLINE offset #-} -- | Construct a 'Position' given the offset from the beginning of the full input. fromStart :: Int -> Int@@ -59,12 +61,12 @@ -- | Given the full input and an offset within it, returns all the input lines up to and including the offset -- in reverse order, as well as the zero-based column number of the offset lineAndColumn :: (Eq s, IsString s, FactorialMonoid s, Position p) => s -> p -> ([s], Int)-lineAndColumn input pos = context [] (offset input pos) (Factorial.split (== "\n") input)- where context revLines restCount []+lineAndColumn input pos = go [] (offset input pos) (Factorial.split (== "\n") input)+ where go revLines restCount [] | restCount > 0 = (["Error: the offset is beyond the input length"], -1) | otherwise = (revLines, restCount)- context revLines restCount (next:rest)+ go revLines restCount (next:rest) | restCount' < 0 = (next:revLines, restCount)- | otherwise = context (next:revLines) restCount' rest+ | otherwise = go (next:revLines) restCount' rest where nextLength = Factorial.length next restCount' = restCount - nextLength - 1
src/Text/Parser/Internal.hs view
@@ -1,6 +1,6 @@ module Text.Parser.Internal where -import Control.Applicative (Applicative, liftA2)+import Control.Applicative (liftA2) import qualified Control.Monad.Trans.Writer.Lazy as Lazy (WriterT(WriterT)) import qualified Control.Monad.Trans.Writer.Strict as Strict (WriterT(WriterT)) import qualified Control.Monad.Trans.State.Lazy as Lazy (StateT(StateT))@@ -32,5 +32,8 @@ mapStrictRWST f (Strict.RWST p) = Strict.RWST (\r-> apply . p r) where apply m = liftA2 replaceFstOf3 (f $ fstOf3 <$> m) m -fstOf3 (a, b, c) = a+fstOf3 :: (a, b, c) -> a+fstOf3 (a, _, _) = a++replaceFstOf3 :: a -> (x, b, c) -> (a, b, c) replaceFstOf3 a (_, b, c) = (a, b, c)
src/Text/Parser/Wrapper.hs view
@@ -4,7 +4,7 @@ module Text.Parser.Wrapper where -import Control.Applicative (Applicative, Alternative)+import Control.Applicative (Alternative) import Control.Monad (MonadPlus) import Text.Parser.Combinators (Parsing) import Text.Parser.LookAhead (LookAheadParsing)