yaml-unscrambler 0.1.0.13 → 0.1.0.14
raw patch · 10 files changed
+149/−100 lines, 10 filesdep −QuickCheckdep −tasty-quickcheckdep ~attoparsecdep ~basedep ~hashable
Dependencies removed: QuickCheck, tasty-quickcheck
Dependency ranges changed: attoparsec, base, hashable, selective
Files
- library/YamlUnscrambler.hs +2/−4
- library/YamlUnscrambler/AsciiAtto.hs +0/−1
- library/YamlUnscrambler/CompactErrRendering.hs +24/−4
- library/YamlUnscrambler/Prelude.hs +1/−2
- library/YamlUnscrambler/Util/ByteString.hs +1/−0
- library/YamlUnscrambler/Util/HashMap.hs +1/−1
- library/YamlUnscrambler/Util/List.hs +0/−2
- library/YamlUnscrambler/Util/Yaml.hs +0/−2
- test/Main.hs +25/−28
- yaml-unscrambler.cabal +95/−56
library/YamlUnscrambler.hs view
@@ -68,7 +68,7 @@ where import qualified Attoparsec.Time.ByteString as AsciiAtto-import qualified Control.Foldl as Fold+import qualified Control.Selective.Trans.Except as Selective.ExceptT import qualified Data.Attoparsec.ByteString.Char8 as AsciiAtto import qualified Data.Attoparsec.Text as TextAtto import qualified Data.ByteString as ByteString@@ -80,7 +80,6 @@ import qualified Data.Text.Encoding as Text import qualified Data.UUID as UUID import qualified Data.Vector as Vector-import qualified Data.Vector.Generic as GenericVector import qualified Data.Yaml.Parser as Yaml import qualified Text.Libyaml as Libyaml import qualified YamlUnscrambler.AsciiAtto as AsciiAtto@@ -91,7 +90,6 @@ import YamlUnscrambler.Prelude hiding (String) import qualified YamlUnscrambler.Util.ByteString as ByteString import qualified YamlUnscrambler.Util.HashMap as HashMap-import qualified YamlUnscrambler.Util.Text as Text import qualified YamlUnscrambler.Util.Vector as Vector import qualified YamlUnscrambler.Util.Yaml as Yaml @@ -498,7 +496,7 @@ select (ByKey le lp) (ByKey re rp) = ByKey (Ex.BothByKey le re)- (\a b c d -> select (lp a b c d) (rp a b c d))+ (\a b c d -> Selective.ExceptT.unwrap (select (Selective.ExceptT.ExceptT (lp a b c d)) (Selective.ExceptT.ExceptT (rp a b c d)))) instance Alternative (ByKey key) where empty =
library/YamlUnscrambler/AsciiAtto.hs view
@@ -1,6 +1,5 @@ module YamlUnscrambler.AsciiAtto where -import Attoparsec.Time.ByteString import Data.Attoparsec.ByteString.Char8 import YamlUnscrambler.Model import YamlUnscrambler.Prelude
library/YamlUnscrambler/CompactErrRendering.hs view
@@ -15,20 +15,30 @@ renderErrAtPath = buildText . errAtPath +path :: [Text] -> TextBuilder path a = "/" <> intercalate "/" (fmap text a) +errAtPath :: Err.ErrAtPath -> TextBuilder errAtPath (Err.ErrAtPath a b) = "Error at path " <> path a <> ". " <> reason b +reason :: Err.Err -> TextBuilder reason = \case Err.KeyErr a b c ->- text c <> ". On input: " <> string (show b) <> ". "+ text c+ <> ". On input: "+ <> string (show b)+ <> ". " <> "Expecting: " <> stringExpectation a Err.NoneOfMappingKeysFoundErr a b c d ->- "None of keys found " <> caseSensitively b <> ": " <> string (show d) <> ". "+ "None of keys found "+ <> caseSensitively b+ <> ": "+ <> string (show d)+ <> ". " <> "Keys available: " <> string (show c) Err.NoneOfSequenceKeysFoundErr a b ->@@ -47,10 +57,13 @@ Err.UnknownAnchorErr a -> "Unknown anchor: " <> text a Err.NotEnoughElementsErr a b ->- "Not enough elements: " <> decimal b <> ". "+ "Not enough elements: "+ <> decimal b+ <> ". " <> "Expecting: " <> byOrderExpectation a +scalarExpectation :: Ex.Scalar -> TextBuilder scalarExpectation = \case Ex.StringScalar a ->@@ -80,6 +93,7 @@ Ex.Base64BinaryScalar -> "binary data in Base-64" +stringExpectation :: Ex.String -> TextBuilder stringExpectation = \case Ex.AnyString ->@@ -89,8 +103,9 @@ Ex.FormattedString a -> text a +byOrderExpectation :: Ex.ByOrder -> TextBuilder byOrderExpectation =- decimal . count 0+ decimal @Integer . count 0 where count !a = \case@@ -109,15 +124,19 @@ Ex.FetchByOrder _ -> count (succ a) c +caseSensitive :: CaseSensitive -> TextBuilder caseSensitive (CaseSensitive a) = "case-" <> bool "insensitive" "sensitive" a +caseSensitively :: CaseSensitive -> TextBuilder caseSensitively (CaseSensitive a) = "case-" <> bool "insensitively" "sensitively" a +signed :: Signed -> TextBuilder signed (Signed a) = bool "unsigned" "signed" a +numeralSystem :: NumeralSystem -> TextBuilder numeralSystem = \case DecimalNumeralSystem ->@@ -125,5 +144,6 @@ HexadecimalNumeralSystem -> "hexadecimal" +maxInputSize :: MaxInputSize -> TextBuilder maxInputSize (MaxInputSize a) = decimal a
library/YamlUnscrambler/Prelude.hs view
@@ -91,12 +91,11 @@ import System.Mem as Exports import System.Mem.StableName as Exports import System.Timeout as Exports-import Text.ParserCombinators.ReadP as Exports (ReadP, ReadS, readP_to_S, readS_to_P) import Text.ParserCombinators.ReadPrec as Exports (ReadPrec, readP_to_Prec, readPrec_to_P, readPrec_to_S, readS_to_Prec) import Text.Printf as Exports (hPrintf, printf) import Text.Read as Exports (Read (..), readEither, readMaybe) import Unsafe.Coerce as Exports import Prelude as Exports hiding (all, and, any, concat, concatMap, elem, fail, foldl, foldl1, foldr, foldr1, id, mapM, mapM_, maximum, minimum, notElem, or, product, sequence, sequence_, sum, (.)) -showAsText :: Show a => a -> Text+showAsText :: (Show a) => a -> Text showAsText = show >>> fromString
library/YamlUnscrambler/Util/ByteString.hs view
@@ -4,6 +4,7 @@ import YamlUnscrambler.Prelude hiding (length, map) import qualified YamlUnscrambler.Util.Word8 as Word8 +lowercaseInAscii :: ByteString -> ByteString lowercaseInAscii = map Word8.lowercaseInAscii
library/YamlUnscrambler/Util/HashMap.hs view
@@ -3,6 +3,6 @@ import Data.HashMap.Strict import YamlUnscrambler.Prelude hiding (lookup) -lookupFirst :: (Hashable k, Eq k) => [k] -> HashMap k v -> Maybe (k, v)+lookupFirst :: (Hashable k) => [k] -> HashMap k v -> Maybe (k, v) lookupFirst keys map = getFirst (foldMap (\k -> First (fmap (k,) (lookup k map))) keys)
library/YamlUnscrambler/Util/List.hs view
@@ -1,7 +1,5 @@ module YamlUnscrambler.Util.List where -import YamlUnscrambler.Prelude hiding (lookup)- firstNonEmpty :: [a] -> [a] -> [a] firstNonEmpty a b = case a of
library/YamlUnscrambler/Util/Yaml.hs view
@@ -1,8 +1,6 @@ module YamlUnscrambler.Util.Yaml where import qualified Conduit-import qualified Data.Text.Encoding as Text-import qualified Data.Yaml as Yaml import qualified Data.Yaml.Parser as YamlParser import qualified Text.Libyaml as Libyaml import YamlUnscrambler.Prelude
test/Main.hs view
@@ -2,17 +2,14 @@ import qualified Control.Foldl as Fold import qualified Data.Text as Text-import GHC.Exts (fromList) import qualified NeatInterpolation as NeatInterpolation-import qualified Test.QuickCheck as QuickCheck-import Test.QuickCheck.Instances+import Test.QuickCheck.Instances () import Test.Tasty import Test.Tasty.HUnit-import Test.Tasty.QuickCheck-import Test.Tasty.Runners import qualified YamlUnscrambler as U import Prelude hiding (assert) +main :: IO () main = defaultMain $ testGroup@@ -33,12 +30,12 @@ fmap Just $ U.boundedIntegerScalar @Int (U.Signed True) U.DecimalNumeralSystem input = [NeatInterpolation.text|- a: 2- b: 3- c:- - 1- - 2- |]+ a: 2+ b: 3+ c:+ - 1+ - 2+ |] in case U.parseText unscrambler input of Right res -> assertFailure (show res)@@ -70,13 +67,13 @@ fmap Just $ U.boundedIntegerScalar @Int (U.Signed True) U.DecimalNumeralSystem input = [NeatInterpolation.text|- sums:- A:- a:- - Int- - Bool- b: Char, Double- |]+ sums:+ A:+ a:+ - Int+ - Bool+ b: Char, Double+ |] in case U.parseText unscrambler input of Right res -> assertFailure (show res)@@ -108,11 +105,11 @@ fmap Just $ U.stringScalar U.textString input = [NeatInterpolation.text|- sums:- A:- a: Text- b: Int- |]+ sums:+ A:+ a: Text+ b: Int+ |] in case U.parseText unscrambler input of Right res -> assertEqual "" (Just [("A", [("a", Just "Text"), ("b", Just "Int")])]) res@@ -144,11 +141,11 @@ fmap Just $ U.boundedIntegerScalar @Int (U.Signed True) U.DecimalNumeralSystem input = [NeatInterpolation.text|- sums:- A:- a: Int- b: Char- |]+ sums:+ A:+ a: Int+ b: Char+ |] in case U.parseText unscrambler input of Right res -> assertFailure (show res)
yaml-unscrambler.cabal view
@@ -1,28 +1,69 @@-name: yaml-unscrambler-version: 0.1.0.13-synopsis: Flexible declarative YAML parsing toolkit-stability: Experimental-homepage: https://github.com/nikita-volkov/yaml-unscrambler-bug-reports: https://github.com/nikita-volkov/yaml-unscrambler/issues-author: Nikita Volkov <nikita.y.volkov@mail.ru>-maintainer: Nikita Volkov <nikita.y.volkov@mail.ru>-copyright: (c) 2020 Nikita Volkov-license: MIT-license-file: LICENSE-build-type: Simple-cabal-version: >=1.10+cabal-version: 3.0+name: yaml-unscrambler+version: 0.1.0.14+synopsis: Flexible declarative YAML parsing toolkit+homepage: https://github.com/nikita-volkov/yaml-unscrambler+bug-reports: https://github.com/nikita-volkov/yaml-unscrambler/issues+author: Nikita Volkov <nikita.y.volkov@mail.ru>+maintainer: Nikita Volkov <nikita.y.volkov@mail.ru>+copyright: (c) 2020 Nikita Volkov+license: MIT+license-file: LICENSE source-repository head- type: git+ type: git location: git://github.com/nikita-volkov/yaml-unscrambler.git +common base+ default-language: Haskell2010+ default-extensions:+ NoImplicitPrelude+ NoMonomorphismRestriction+ BangPatterns+ ConstraintKinds+ DataKinds+ DefaultSignatures+ DeriveDataTypeable+ DeriveFoldable+ DeriveFunctor+ DeriveGeneric+ DeriveTraversable+ EmptyDataDecls+ FlexibleContexts+ FlexibleInstances+ FunctionalDependencies+ GADTs+ GeneralizedNewtypeDeriving+ InstanceSigs+ LambdaCase+ LiberalTypeSynonyms+ MagicHash+ MultiParamTypeClasses+ MultiWayIf+ OverloadedStrings+ ParallelListComp+ PatternGuards+ QuasiQuotes+ RankNTypes+ RecordWildCards+ ScopedTypeVariables+ StandaloneDeriving+ StrictData+ TemplateHaskell+ TupleSections+ TypeApplications+ TypeFamilies+ TypeOperators+ UnboxedTuples+ ViewPatterns+ library- hs-source-dirs: library- default-extensions: BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, InstanceSigs, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, StrictData, TemplateHaskell, TupleSections, TypeApplications, TypeFamilies, TypeOperators, UnboxedTuples, ViewPatterns- default-language: Haskell2010+ import: base+ hs-source-dirs: library exposed-modules: YamlUnscrambler YamlUnscrambler.Expectations+ other-modules: YamlUnscrambler.AsciiAtto YamlUnscrambler.CompactErrRendering@@ -30,51 +71,49 @@ YamlUnscrambler.Model YamlUnscrambler.Prelude YamlUnscrambler.Util.ByteString- YamlUnscrambler.Util.Maybe YamlUnscrambler.Util.HashMap YamlUnscrambler.Util.List- YamlUnscrambler.Util.Yaml- YamlUnscrambler.Util.Word8+ YamlUnscrambler.Util.Maybe YamlUnscrambler.Util.Text YamlUnscrambler.Util.Vector+ YamlUnscrambler.Util.Word8+ YamlUnscrambler.Util.Yaml+ build-depends:- acc >=0.2.0.1 && <0.3,- attoparsec >=0.13 && <0.15,- attoparsec-data >=1.0.5.2 && <1.1,- attoparsec-time >=1.0.1.2 && <1.1,- base >=4.11 && <5,- base64-bytestring >=1.2.1 && <1.3,- bytestring >=0.10 && <0.12,- conduit >=1.3.2 && <1.4,- containers >=0.6.2 && <0.7,- foldl >=1.4 && <2,- hashable >=1 && <2,- libyaml >=0.1.2 && <0.2,- mtl >=2.2 && <3,- scientific >=0.3.6.2 && <0.4,- selective >=0.5 && <0.7,- text >=1 && <3,- text-builder-dev >=0.3 && <0.4,- time >=1.9 && <2,- transformers >=0.5 && <0.7,- unordered-containers >=0.2.10 && <0.3,- uuid >=1.3 && <2,- vector >=0.12 && <0.14,- yaml >=0.11.5 && <0.12+ , acc >=0.2.0.1 && <0.3+ , attoparsec >=0.14 && <0.15+ , attoparsec-data >=1.0.5.2 && <1.1+ , attoparsec-time >=1.0.1.2 && <1.1+ , base >=4.13 && <5+ , base64-bytestring >=1.2.1 && <1.3+ , bytestring >=0.10 && <0.12+ , conduit >=1.3.2 && <1.4+ , containers >=0.6.2 && <0.7+ , foldl >=1.4 && <2+ , hashable >=1.4 && <2+ , libyaml >=0.1.2 && <0.2+ , mtl >=2.2 && <3+ , scientific >=0.3.6.2 && <0.4+ , selective >=0.6 && <0.7+ , text >=1 && <3+ , text-builder-dev >=0.3 && <0.4+ , time >=1.9 && <2+ , transformers >=0.5 && <0.7+ , unordered-containers >=0.2.10 && <0.3+ , uuid >=1.3 && <2+ , vector >=0.12 && <0.14+ , yaml >=0.11.5 && <0.12 test-suite test- type: exitcode-stdio-1.0+ import: base+ type: exitcode-stdio-1.0 hs-source-dirs: test- default-extensions: BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, InstanceSigs, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, StrictData, TemplateHaskell, TupleSections, TypeApplications, TypeFamilies, TypeOperators, UnboxedTuples, ViewPatterns- default-language: Haskell2010- main-is: Main.hs+ main-is: Main.hs build-depends:- foldl >=1.4.9 && <2,- neat-interpolation >=0.5.1.2 && <0.6,- QuickCheck >=2.8.1 && <3,- quickcheck-instances >=0.3.11 && <0.4,- rerebase >=1.14 && <2,- tasty >=0.12 && <2,- tasty-hunit >=0.9 && <0.11,- tasty-quickcheck >=0.9 && <0.11,- yaml-unscrambler+ , foldl >=1.4.9 && <2+ , neat-interpolation >=0.5.1.2 && <0.6+ , quickcheck-instances >=0.3.11 && <0.4+ , rerebase >=1.14 && <2+ , tasty >=0.12 && <2+ , tasty-hunit >=0.9 && <0.11+ , yaml-unscrambler