packages feed

byte-count-reader 0.9.0.0 → 0.10.0.0

raw patch · 5 files changed

+21/−8 lines, 5 filesdep +parsec-numbersdep −parsec3-numbersdep ~extraPVP ok

version bump matches the API change (PVP)

Dependencies added: parsec-numbers

Dependencies removed: parsec3-numbers

Dependency ranges changed: extra

API changes (from Hackage documentation)

- Data.ByteCountReader: sizeInBytes :: String -> Maybe Integer
+ Data.ByteCountReader: sizeInBytes :: Text -> Maybe Integer

Files

ChangeLog.md view
@@ -2,5 +2,9 @@  ## Unreleased changes +## 0.10+- bytesParser now accepts Text not [Char] datatypes+- Moved usage of parsec3-numbers to parsec-numbers+ ## 0.9 - Initial Version
README.md view
@@ -1,4 +1,9 @@ # Byte Count Reader+-------------------++[![Build Status](https://travis-ci.org/danielrolls/byte-count-reader.svg?branch=master)](https://travis-ci.org/danielrolls/byte-count-reader)+[![Hackage](https://img.shields.io/hackage/v/byte-count-reader.svg)][hackage]+ This library is for reading strings describing a number of bytes like 2Kb and 0.5 MiB.  The units KB, MB, GB and TB imply base 10 (e.g. 2KB = 2 x 1000).@@ -10,3 +15,5 @@ - 3.5 MB - 10    gib - 100tb++[hackage]: http://hackage.haskell.org/package/github "Hackage"
byte-count-reader.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.2 name: byte-count-reader-version: 0.9.0.0+version: 0.10.0.0 license: GPL-3.0-only license-file: LICENSE copyright: 2020 Daniel Rolls@@ -34,7 +34,7 @@         base >=4.7 && <5,         extra >=1.6.21 && <1.7,         parsec >=3.1.14.0 && <3.2,-        parsec3-numbers >=0.1.0 && <0.2,+        parsec-numbers >=0.1.0 && <0.2,         text >=1.2.4.0 && <1.3  test-suite haskelltest-test@@ -52,5 +52,5 @@         extra >=1.6.21 && <1.7,         hspec >=2.7.1 && <2.8,         parsec >=3.1.14.0 && <3.2,-        parsec3-numbers >=0.1.0 && <0.2,+        parsec-numbers >=0.1.0 && <0.2,         text >=1.2.4.0 && <1.3
src/Data/ByteCountReader.hs view
@@ -11,16 +11,17 @@ module Data.ByteCountReader (sizeInBytes) where  import Data.Char (toLower)-import Text.ParserCombinators.Parsec (GenParser, many, many1, oneOf, char, parse, anyChar) import Data.Either.Extra (eitherToMaybe)-import Text.Parsec.Number (floating3)+import Data.Text (Text(), unpack) import GHC.Float.RealFracMethods (roundDoubleInteger)+import Text.ParserCombinators.Parsec.Number (floating3)+import Text.ParserCombinators.Parsec (GenParser, many, many1, oneOf, char, parse, anyChar)  -- |Read strings describing a number of bytes like 2KB and 0.5 MiB. -- The units KB, MB, GB and TB are assumed to be base 10 (e.g. 2KB = 2 x 1000). -- The units KiB, MiB, GiB and TiB are assumed to be base 2 (e.g. 2KiB = 2 * 1024).-sizeInBytes :: String -> Maybe Integer-sizeInBytes inStr = do (number, units) <- eitherToMaybe $ parse bytesParser "<>" inStr+sizeInBytes :: Text -> Maybe Integer+sizeInBytes inStr = do (number, units) <- eitherToMaybe $ parse bytesParser "<>" (unpack inStr)                        roundDoubleInteger . (number *) . fromInteger <$> toMultiplier units  bytesParser :: GenParser Char st (Double, String)
test/Spec.hs view
@@ -1,6 +1,7 @@ import Test.Hspec  import Data.ByteCountReader+import Data.Text (unpack)  main :: IO () main = hspec $ @@ -17,7 +18,7 @@           , ("1      tIb", 1099511627776)           ]         where testHappyPathScenarios = foldl (>>) (return ()) . map parseTest-              parseTest (string, expectedValue) = it ("Parse " <> string) $+              parseTest (string, expectedValue) = it ("Parse " <> unpack string) $                                                      sizeInBytes string `shouldBe` Just expectedValue