packages feed

exon 1.4.0.0 → 1.5.0.0

raw patch · 5 files changed

+73/−122 lines, 5 filesdep ~basedep ~flatparsedep ~hedgehogPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base, flatparse, hedgehog, incipit-base, tasty, tasty-hedgehog

API changes (from Hackage documentation)

- Exon: [$sel:exonUse:ExonUse] :: ExonUse a -> a
- Exon.Class.Exon: [$sel:exonUse:ExonUse] :: ExonUse a -> a
- Exon.Class.Exon: instance Exon.Class.Exon.ExonBuilder Data.ByteString.Internal.ByteString Data.ByteString.Builder.Internal.Builder
- Exon.Class.ToSegment: instance Data.String.IsString a => Exon.Class.ToSegment.ToSegment Data.ByteString.Internal.ByteString a
+ Exon: intercalate1 :: Exon a => a -> NonEmpty a -> a
+ Exon: intercalateMay :: Exon a => Foldable t => a -> t a -> Maybe a
+ Exon.Class.Exon: exonUse :: ExonUse a -> a
+ Exon.Class.Exon: instance Exon.Class.Exon.ExonBuilder Data.ByteString.Internal.Type.ByteString Data.ByteString.Builder.Internal.Builder
+ Exon.Class.ToSegment: instance Data.String.IsString a => Exon.Class.ToSegment.ToSegment Data.ByteString.Internal.Type.ByteString a
+ Exon.Combinators: intercalate1 :: Exon a => a -> NonEmpty a -> a
+ Exon.Combinators: intercalateMay :: Exon a => Foldable t => a -> t a -> Maybe a
- Exon: intercalate :: Monoid a => Foldable t => a -> t a -> a
+ Exon: intercalate :: Exon a => Monoid a => Foldable t => a -> t a -> a
- Exon.Combinators: intercalate :: Monoid a => Foldable t => a -> t a -> a
+ Exon.Combinators: intercalate :: Exon a => Monoid a => Foldable t => a -> t a -> a

Files

changelog.md view
@@ -1,3 +1,8 @@+# 1.5.0.0++* Use `exonProcess` for `intercalate`+* Add `intercalate1` for `NonEmpty`+ # 1.2.0.0  * Add class `ExonExpression`, allowing customization of how interpolated expressions are converted to builders.
exon.cabal view
@@ -1,29 +1,29 @@ cabal-version: 2.2 --- This file has been generated from package.yaml by hpack version 0.35.0.+-- This file has been generated from package.yaml by hpack version 0.35.2. -- -- see: https://github.com/sol/hpack  name:           exon-version:        1.4.0.0-synopsis:       Customizable Quasiquote Interpolation+version:        1.5.0.0+synopsis:       Customizable quasiquote interpolation description:    See https://hackage.haskell.org/package/exon/docs/Exon.html category:       String-homepage:       https://git.tryp.io/tek/exon+homepage:       https://github.com/tek/exon#readme bug-reports:    https://github.com/tek/exon/issues author:         Torsten Schmits maintainer:     hackage@tryp.io-copyright:      2022 Torsten Schmits+copyright:      2023 Torsten Schmits license:        BSD-2-Clause-Patent license-file:   LICENSE build-type:     Simple extra-source-files:-    changelog.md     readme.md+    changelog.md  source-repository head   type: git-  location: https://git.tryp.io/tek/exon+  location: https://github.com/tek/exon  library   exposed-modules:@@ -44,80 +44,53 @@   default-extensions:       AllowAmbiguousTypes       ApplicativeDo-      BangPatterns-      BinaryLiterals       BlockArguments-      ConstraintKinds       DataKinds       DefaultSignatures       DeriveAnyClass-      DeriveDataTypeable-      DeriveFoldable-      DeriveFunctor-      DeriveGeneric-      DeriveLift-      DeriveTraversable       DerivingStrategies       DerivingVia       DisambiguateRecordFields-      DoAndIfThenElse       DuplicateRecordFields-      EmptyCase-      EmptyDataDecls-      ExistentialQuantification-      FlexibleContexts-      FlexibleInstances       FunctionalDependencies       GADTs-      GeneralizedNewtypeDeriving-      InstanceSigs-      KindSignatures       LambdaCase       LiberalTypeSynonyms-      MultiParamTypeClasses       MultiWayIf-      NamedFieldPuns       OverloadedLabels       OverloadedLists       OverloadedStrings       PackageImports       PartialTypeSignatures-      PatternGuards       PatternSynonyms-      PolyKinds       QuantifiedConstraints       QuasiQuotes-      RankNTypes       RecordWildCards       RecursiveDo       RoleAnnotations-      ScopedTypeVariables-      StandaloneDeriving       TemplateHaskell-      TupleSections-      TypeApplications       TypeFamilies       TypeFamilyDependencies-      TypeOperators-      TypeSynonymInstances       UndecidableInstances       UnicodeSyntax       ViewPatterns-  ghc-options: -Wall -Wredundant-constraints -Wincomplete-uni-patterns -Wmissing-deriving-strategies -Widentities -Wunused-packages+      OverloadedRecordDot+      NoFieldSelectors+  ghc-options: -Wall -Widentities -Wincomplete-uni-patterns -Wmissing-deriving-strategies -Wredundant-constraints -Wunused-type-patterns -Wunused-packages   build-depends:-      base >=4.12 && <5-    , flatparse ==0.4.*+      base ==4.*+    , flatparse >=0.4 && <0.6     , generics-sop >=0.5.1.1 && <0.6     , ghc-hs-meta ==0.1.*-    , incipit-base ==0.5.*+    , incipit-base >=0.4 && <0.6     , template-haskell   mixins:       base hiding (Prelude)     , incipit-base (IncipitBase as Prelude)     , incipit-base hiding (IncipitBase)-  default-language: Haskell2010+  default-language: GHC2021 -test-suite exon-unit+test-suite exon-test   type: exitcode-stdio-1.0   main-is: Main.hs   other-modules:@@ -132,79 +105,52 @@   default-extensions:       AllowAmbiguousTypes       ApplicativeDo-      BangPatterns-      BinaryLiterals       BlockArguments-      ConstraintKinds       DataKinds       DefaultSignatures       DeriveAnyClass-      DeriveDataTypeable-      DeriveFoldable-      DeriveFunctor-      DeriveGeneric-      DeriveLift-      DeriveTraversable       DerivingStrategies       DerivingVia       DisambiguateRecordFields-      DoAndIfThenElse       DuplicateRecordFields-      EmptyCase-      EmptyDataDecls-      ExistentialQuantification-      FlexibleContexts-      FlexibleInstances       FunctionalDependencies       GADTs-      GeneralizedNewtypeDeriving-      InstanceSigs-      KindSignatures       LambdaCase       LiberalTypeSynonyms-      MultiParamTypeClasses       MultiWayIf-      NamedFieldPuns       OverloadedLabels       OverloadedLists       OverloadedStrings       PackageImports       PartialTypeSignatures-      PatternGuards       PatternSynonyms-      PolyKinds       QuantifiedConstraints       QuasiQuotes-      RankNTypes       RecordWildCards       RecursiveDo       RoleAnnotations-      ScopedTypeVariables-      StandaloneDeriving       TemplateHaskell-      TupleSections-      TypeApplications       TypeFamilies       TypeFamilyDependencies-      TypeOperators-      TypeSynonymInstances       UndecidableInstances       UnicodeSyntax       ViewPatterns-  ghc-options: -Wall -Wredundant-constraints -Wincomplete-uni-patterns -Wmissing-deriving-strategies -Widentities -Wunused-packages -threaded -rtsopts -with-rtsopts=-N+      OverloadedRecordDot+      NoFieldSelectors+  ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall -Widentities -Wincomplete-uni-patterns -Wmissing-deriving-strategies -Wredundant-constraints -Wunused-type-patterns -Wunused-packages   build-depends:-      base >=4.12 && <5+      base ==4.*     , exon-    , hedgehog-    , incipit-base ==0.5.*-    , tasty-    , tasty-hedgehog+    , hedgehog >=1.1 && <1.3+    , incipit-base >=0.4 && <0.6+    , tasty ==1.4.*+    , tasty-hedgehog >=1.3 && <1.5     , template-haskell   mixins:       base hiding (Prelude)     , incipit-base (IncipitBase as Prelude)     , incipit-base hiding (IncipitBase)-  default-language: Haskell2010+  default-language: GHC2021  benchmark exon-bench   type: exitcode-stdio-1.0@@ -214,73 +160,46 @@   default-extensions:       AllowAmbiguousTypes       ApplicativeDo-      BangPatterns-      BinaryLiterals       BlockArguments-      ConstraintKinds       DataKinds       DefaultSignatures       DeriveAnyClass-      DeriveDataTypeable-      DeriveFoldable-      DeriveFunctor-      DeriveGeneric-      DeriveLift-      DeriveTraversable       DerivingStrategies       DerivingVia       DisambiguateRecordFields-      DoAndIfThenElse       DuplicateRecordFields-      EmptyCase-      EmptyDataDecls-      ExistentialQuantification-      FlexibleContexts-      FlexibleInstances       FunctionalDependencies       GADTs-      GeneralizedNewtypeDeriving-      InstanceSigs-      KindSignatures       LambdaCase       LiberalTypeSynonyms-      MultiParamTypeClasses       MultiWayIf-      NamedFieldPuns       OverloadedLabels       OverloadedLists       OverloadedStrings       PackageImports       PartialTypeSignatures-      PatternGuards       PatternSynonyms-      PolyKinds       QuantifiedConstraints       QuasiQuotes-      RankNTypes       RecordWildCards       RecursiveDo       RoleAnnotations-      ScopedTypeVariables-      StandaloneDeriving       TemplateHaskell-      TupleSections-      TypeApplications       TypeFamilies       TypeFamilyDependencies-      TypeOperators-      TypeSynonymInstances       UndecidableInstances       UnicodeSyntax       ViewPatterns-  ghc-options: -Wall -Wredundant-constraints -Wincomplete-uni-patterns -Wmissing-deriving-strategies -Widentities -Wunused-packages+      OverloadedRecordDot+      NoFieldSelectors+  ghc-options: -Wall -Widentities -Wincomplete-uni-patterns -Wmissing-deriving-strategies -Wredundant-constraints -Wunused-type-patterns -Wunused-packages   build-depends:-      base >=4.12 && <5+      base ==4.*     , criterion     , exon-    , incipit-base ==0.5.*+    , incipit-base >=0.4 && <0.6   mixins:       base hiding (Prelude)     , incipit-base (IncipitBase as Prelude)     , incipit-base hiding (IncipitBase)-  default-language: Haskell2010+  default-language: GHC2021
lib/Exon.hs view
@@ -52,7 +52,7 @@   ExonUse (..),   ) import Exon.Class.ToSegment (ToSegment (..))-import Exon.Combinators (intercalate)+import Exon.Combinators (intercalate, intercalate1, intercalateMay) import Exon.Data.Result (Result (..)) import Exon.Data.Segment (Segment (..)) import Exon.Quote (exon, exonWith, exonws, exun)
lib/Exon/Class/Exon.hs view
@@ -15,9 +15,12 @@ -- -- @since 1.0.0.0 newtype ExonUse a =-  ExonUse { exonUse :: a }+  ExonUse a   deriving stock (Eq, Show)   deriving newtype (IsString)++exonUse :: ExonUse a -> a+exonUse = coerce  -- |This class converts a segment into a builder. --
lib/Exon/Combinators.hs view
@@ -1,19 +1,43 @@ -- |Description: Internal module Exon.Combinators where -import Prelude hiding (intercalate)+import qualified Data.List.NonEmpty as NonEmpty+import Prelude hiding (intersperse) --- |Monoidally combine all elements in the list, appending the separator between each pair of elements.+import Exon.Class.Exon (Exon (exonProcess))+import qualified Exon.Data.Segment as Segment++-- | Combine the elements in the list using 'Exon', interspersing the separator between each pair of elements.+intercalate1 ::+  Exon a =>+  a ->+  NonEmpty a ->+  a+intercalate1 sep ta =+  exonProcess (Segment.Expression <$> NonEmpty.intersperse sep ta)++-- | Combine the elements in the list using 'Exon', interspersing the separator between each pair of elements.+--+-- Returns 'Nothing' when the list is empty.+intercalateMay ::+  Exon a =>+  Foldable t =>+  a ->+  t a ->+  Maybe a+intercalateMay sep ta =+  intercalate1 sep <$> nonEmpty (toList ta)++-- | Combine the elements in the list using 'Exon', interspersing the separator between each pair of elements.+--+-- Returns 'mempty' for empty lists; use 'intercalate1' for 'NonEmpty' or 'intercalateMay' to avoid the 'Monoid'+-- requirement. intercalate ::+  Exon a =>   Monoid a =>   Foldable t =>   a ->   t a ->   a-intercalate sep =-  fold . foldl' f Nothing-  where-    f Nothing a =-      Just a-    f (Just z) a =-      Just (z <> sep <> a)+intercalate sep ta =+  fromMaybe mempty (intercalateMay sep ta)