packages feed

ascii-group 1.0.0.10 → 1.0.0.12

raw patch · 5 files changed

+114/−98 lines, 5 filesdep +hedgehogdep ~ascii-chardep ~basePVP ok

version bump matches the API change (PVP)

Dependencies added: hedgehog

Dependency ranges changed: ascii-char, base

API changes (from Hackage documentation)

Files

ascii-group.cabal view
@@ -1,11 +1,14 @@-cabal-version: 2.0+cabal-version: 3.0  name: ascii-group-version: 1.0.0.10+version: 1.0.0.12 synopsis: ASCII character groups category: Data, Text -description: This package defines a @Group@ type that describes the two varieties of ASCII character, and provides some functions for classifying characters by group.+description:+    This package defines a @Group@ type that describes+    the two varieties of ASCII character, and provides+    some functions for classifying characters by group.  license: Apache-2.0 license-file: license.txt@@ -13,42 +16,54 @@ author: Chris Martin maintainer: Chris Martin, Julie Moronuki -homepage:    https://github.com/typeclasses/ascii+homepage: https://github.com/typeclasses/ascii bug-Reports: https://github.com/typeclasses/ascii/issues  build-type: Simple -extra-source-files: changelog.txt- source-repository head-    type:     git+    type: git     location: git://github.com/typeclasses/ascii.git -library+common base     default-language: Haskell2010-    default-extensions: NoImplicitPrelude-    default-extensions: StandaloneDeriving-    default-extensions: DeriveAnyClass-    default-extensions: DerivingStrategies-    default-extensions: DeriveDataTypeable-    default-extensions: DeriveGeneric     ghc-options: -Wall++    default-extensions:+        NoImplicitPrelude++    build-depends:+        ascii-char ^>= 1.0+      , base >= 4.11 && < 4.17++library+    import: base     hs-source-dirs: library -    build-depends: ascii-char ^>= 1.0+    default-extensions:+        DeriveAnyClass+        DeriveDataTypeable+        DeriveGeneric+        DerivingStrategies+        StandaloneDeriving -    build-depends: base       >= 4.11 && < 4.17-    build-depends: hashable   >= 1.2  && < 1.5+    build-depends:+        hashable >= 1.2 && < 1.5 -    exposed-modules: ASCII.Group+    exposed-modules:+        ASCII.Group -test-suite test+test-suite test-ascii-group+    import: base     type: exitcode-stdio-1.0-    default-language: Haskell2010-    default-extensions: NoImplicitPrelude-    default-extensions: OverloadedStrings-    default-extensions: QuasiQuotes-    ghc-options: -Wall     hs-source-dirs: test-    main-is: test.hs-    build-depends: ascii-char, ascii-group, base+    main-is: Main.hs++    build-depends:+        ascii-group+      , hedgehog ^>= 1.0 || ^>= 1.1++    default-extensions:+        OverloadedStrings+        QuasiQuotes+        TemplateHaskell
− changelog.txt
@@ -1,6 +0,0 @@-1.0.0.0  - 2020-05-05 - Initial release-1.0.0.2  - 2020-05-18 - Support GHC 8.10-1.0.0.4  - 2021-02-10 - Support GHC 9.0-1.0.0.6  - 2021-09-26 - Add a test suite-1.0.0.8  - 2021-11-13 - Support hashable 1.4-1.0.0.10 - 2022-01-09 - Support GHC 9.2
library/ASCII/Group.hs view
@@ -12,15 +12,15 @@   )   where -import ASCII.Char    ( Char )-import Data.Bool     ( Bool )-import Data.Data     ( Data )-import Data.Eq       ( Eq, (==) )-import Data.Hashable ( Hashable )-import Data.Ord      ( Ord, (<) )-import GHC.Generics  ( Generic )-import Prelude       ( Enum, Bounded )-import Text.Show     ( Show )+import ASCII.Char (Char)+import Data.Bool (Bool)+import Data.Data (Data)+import Data.Eq (Eq, (==))+import Data.Hashable (Hashable)+import Data.Ord (Ord, (<))+import GHC.Generics (Generic)+import Prelude (Bounded, Enum)+import Text.Show (Show)  import qualified ASCII.Char as Char 
+ test/Main.hs view
@@ -0,0 +1,64 @@+module Main (main) where++import ASCII.Group++import ASCII.Char (Char (..), allCharacters)++import Control.Monad (Monad (..))+import Data.Bool (not)+import Data.Foldable (all)+import Data.Function (($))+import Data.List (filter, length)+import System.IO (IO)+import Control.Monad (when)+import System.Exit (exitFailure)++import Hedgehog (Property, assert, checkParallel, discover, property,+                 withTests, (===))++main :: IO ()+main = checkParallel $$(discover) >>= \ok -> when (not ok) exitFailure++prop_letter :: Property+prop_letter = withTests 1 $ property $+    charGroup CapitalLetterA === Printable++prop_control :: Property+prop_control = withTests 1 $ property $+    charGroup EndOfTransmission === Control++prop_not_printable :: Property+prop_not_printable = withTests 1 $ property $+    assert $ not $ inGroup Printable EndOfTransmission++prop_is_control :: Property+prop_is_control = withTests 1 $ property $+    assert $ inGroup Control EndOfTransmission++-- It is perhaps surprising that space is considered a+-- "printable" character, since it does not visibly appear.+prop_space_is_printable :: Property+prop_space_is_printable = withTests 1 $ property $+    charGroup Space === Printable++-- It is perhaps surprising that horizontal tab is not+-- in the same category as space.+prop_horizontal_tab_is_control :: Property+prop_horizontal_tab_is_control = withTests 1 $ property $+    charGroup HorizontalTab === Control++prop_various_printables :: Property+prop_various_printables = withTests 1 $ property $+    assert $ all (inGroup Printable) [CapitalLetterA, SmallLetterZ, Digit4, Tilde]++prop_various_controls :: Property+prop_various_controls = withTests 1 $ property $+    assert $ all (inGroup Control) [Null, Substitute, UnitSeparator, Delete]++prop_count_printables :: Property+prop_count_printables = withTests 1 $ property $+    length (filter (inGroup Printable) allCharacters) === 95++prop_count_controls :: Property+prop_count_controls = withTests 1 $ property $+    length (filter (inGroup Control) allCharacters) === 33
− test/test.hs
@@ -1,57 +0,0 @@-module Main where--import ASCII.Group--import ASCII.Char (Char (..), allCharacters)--import Control.Applicative (Applicative (..))-import Control.Monad (Monad (..))-import Data.Bool (Bool (..), not)-import Data.Eq (Eq ((==)))-import Data.Foldable (all)-import Data.Function ((.), ($))-import Data.Functor (Functor (..))-import Data.List (intercalate, map, null, length, filter)-import Data.Semigroup ((<>))-import Numeric.Natural (Natural)-import System.Exit (die)-import System.IO (IO, putStrLn)-import Text.Show (show)--main :: IO ()-main = dieIfFailures $ do-    test 1 $ map charGroup [CapitalLetterA, EndOfTransmission] == [Printable, Control]-    test 2 $ not $ inGroup Printable EndOfTransmission-    test 3 $ inGroup Control EndOfTransmission-    test 4 $ charGroup Space == Printable-    test 5 $ charGroup HorizontalTab == Control-    test 6 $ all (inGroup Printable) [CapitalLetterA, SmallLetterZ, Digit4, Tilde]-    test 7 $ all (inGroup Control) [Null, Substitute, UnitSeparator, Delete]-    test 8 $ length (filter (inGroup Control) allCharacters) == 33-    test 9 $ length (filter (inGroup Printable) allCharacters) == 95--dieIfFailures :: Failures a -> IO a-dieIfFailures (Failures fs x) =-    if null fs-        then do putStrLn "💯"; return x-        else die $ intercalate " " (map (("🔥" <> ) . show) fs)--type TestNumber = Natural--test :: TestNumber -> Bool -> Failures ()-test n t = Failures (if t then [] else [n]) ()--data Failures a = Failures [TestNumber] a--instance Functor Failures-  where-    fmap f (Failures a x) = Failures a (f x)--instance Applicative Failures-  where-    pure x = Failures [] x-    Failures a f <*> Failures b x = Failures (a <> b) (f x)--instance Monad Failures-  where-    Failures a x >>= f = let Failures b y = f x in Failures (a <> b) y