yaml-combinators 1.1.1 → 1.1.1.1
raw patch · 3 files changed
+20/−11 lines, 3 filesdep ~basePVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
Dependency ranges changed: base
API changes (from Hackage documentation)
+ Data.Yaml.Combinators: instance Data.Semigroup.Semigroup (Data.Yaml.Combinators.Parser a)
+ Data.Yaml.Combinators: instance Data.Semigroup.Semigroup (Data.Yaml.Combinators.ParserComponent a fs)
Files
- ChangeLog.md +4/−0
- src/Data/Yaml/Combinators.hs +14/−8
- yaml-combinators.cabal +2/−3
ChangeLog.md view
@@ -1,5 +1,9 @@ # Revision history for yaml-combinators +## 1.1.1.1++Make compatible with GHC 8.4 and drop support for GHC 7.x+ ## 1.1.1 Add `anyValue`, which parses any JSON value
src/Data/Yaml/Combinators.hs view
@@ -43,7 +43,7 @@ import Data.List import Data.Maybe import Data.ByteString (ByteString)-import Data.Monoid ((<>))+import Data.Semigroup (Semigroup((<>))) import qualified Data.ByteString.Char8 as BS8 import Data.Bifunctor (first) import Control.Monad.Trans.Reader@@ -62,7 +62,7 @@ -- $setup -- >>> :set -XOverloadedStrings -XTypeApplications--- >>> import Data.Monoid+-- >>> import Data.Semigroup -- orphan Value instances deriveGeneric ''Value@@ -193,8 +193,8 @@ -- -- * Construct a 'Parser' with 'string', 'number', 'integer', 'bool', 'array', or 'object'. ----- * Combine two or more 'Parser's with 'Monoid' operators--- such as 'mappend', 'Data.Monoid.<>', or `mconcat` —+-- * Combine two or more 'Parser's with 'Monoid' or 'Semigroup' operators+-- such as 'mappend', '<>', or `mconcat` — -- e.g. if you expect either an object or a string. -- -- * Run with 'parse' or 'runParser'.@@ -207,9 +207,8 @@ instance Functor Parser where fmap f (Parser comps) = Parser $ hliftA (pcFmap f) comps -instance Monoid (ParserComponent a fs) where- mempty = ParserComponent Nothing- ParserComponent mbP1 `mappend` ParserComponent mbP2 =+instance Semigroup (ParserComponent a fs) where+ ParserComponent mbP1 <> ParserComponent mbP2 = ParserComponent $ case (mbP1, mbP2) of (Nothing, Nothing) -> Nothing (Just p1, Nothing) -> Just p1@@ -220,9 +219,16 @@ (_, Right r2) -> Right r2 (Left l1, Left l2) -> Left $ mergeParseError l1 l2 +instance Monoid (ParserComponent a fs) where+ mempty = ParserComponent Nothing+ mappend = (<>)++instance Semigroup (Parser a) where+ Parser rec1 <> Parser rec2 = Parser $ hliftA2 mappend rec1 rec2+ instance Monoid (Parser a) where mempty = Parser $ hpure mempty- Parser rec1 `mappend` Parser rec2 = Parser $ hliftA2 mappend rec1 rec2+ mappend = (<>) -- | A low-level function to run a 'Parser'. runParser :: Parser a -> Value -> Either ParseError a
yaml-combinators.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: yaml-combinators-version: 1.1.1+version: 1.1.1.1 synopsis: YAML parsing combinators for improved validation and error reporting description: Based on the article <https://ro-che.info/articles/2015-07-26-better-yaml-parsing Better Yaml Parsing>.@@ -31,7 +31,7 @@ -- other-extensions: build-depends: aeson,- base >= 4.8 && < 5,+ base >= 4.9 && < 5, bytestring, generics-sop >= 0.2.5, scientific,@@ -41,7 +41,6 @@ vector, yaml hs-source-dirs: src- default-language: Haskell2010 ghc-options: -Wall -fno-warn-orphans test-suite test