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 +4/−0
- README.md +7/−0
- byte-count-reader.cabal +3/−3
- src/Data/ByteCountReader.hs +5/−4
- test/Spec.hs +2/−1
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+-------------------++[](https://travis-ci.org/danielrolls/byte-count-reader)+[][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