box-csv 0.0.1 → 0.0.2
raw patch · 2 files changed
+44/−8 lines, 2 filesdep −foldldep ~boxdep ~numhaskPVP ok
version bump matches the API change (PVP)
Dependencies removed: foldl
Dependency ranges changed: box, numhask
API changes (from Hackage documentation)
+ Box.Csv: day' :: Char -> Parser Day
+ Box.Csv: localtime' :: Char -> Parser LocalTime
+ Box.Csv: tod' :: Char -> Parser TimeOfDay
Files
- box-csv.cabal +6/−7
- src/Box/Csv.hs +38/−1
box-csv.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.4 name: box-csv-version: 0.0.1+version: 0.0.2 synopsis: See readme.md description: See readme.md for description. category: project@@ -30,16 +30,15 @@ -Wincomplete-uni-patterns -Wredundant-constraints build-depends:- base >=4.7 && <5, attoparsec >= 0.13,- box >= 0.4 && < 0.6,- foldl >= 1.4,+ base >=4.7 && <5,+ box >= 0.6 && < 0.7, generic-lens, lens >= 4.19,+ numhask >= 0.6 && < 0.7,+ scientific >= 0.3, text >= 1.2, time >= 1.9,- scientific >= 0.3,- numhask >= 0.6 exposed-modules: Box.Csv other-modules:@@ -64,5 +63,5 @@ build-depends: base >=4.7 && <5, doctest >= 0.16,- numhask >= 0.6+ numhask >= 0.6 && < 0.7 default-language: Haskell2010
src/Box/Csv.hs view
@@ -30,6 +30,9 @@ scis, ints, doubles,+ day',+ tod',+ localtime', ) where @@ -40,6 +43,7 @@ import Data.Scientific import qualified Data.Text as Text import NumHask.Prelude+import Data.Time -- $setup -- >>> :set -XOverloadedStrings@@ -185,6 +189,39 @@ double' :: Char -> A.Parser Double double' c = A.double <* A.char c +-- | Day parser, consumes separator+--+-- >>> A.parse (day' ',') "2020-07-01,ok"+-- Done "ok" 2020-07-01+day' :: Char -> A.Parser Day+day' c = do+ d <- A.takeTill (== c)+ d' <- parseTimeM False defaultTimeLocale "%F" (unpack d)+ _ <- A.char c+ pure d'++-- | TimeOfDay parser, consumes separator+--+-- >>> A.parse (tod' ',') "23:52:05.221109,ok"+-- Done "ok" 23:52:05.221109+tod' :: Char -> A.Parser TimeOfDay+tod' c = do+ d <- A.takeTill (== c)+ d' <- parseTimeM False defaultTimeLocale "%T%Q" (unpack d)+ _ <- A.char c+ pure d'++-- | TimeOfDay parser, consumes separator+--+-- >>> A.parse (localtime' ',') "Jun 24 8:24AM,ok"+-- Done "ok" 2020-06-24 08:24:00+localtime' :: Char -> A.Parser LocalTime+localtime' c = do+ d <- A.takeTill (== c)+ d' <- parseTimeM False defaultTimeLocale "%Y %b %e %k:%M%p" (unpack ("2020 " <> d))+ _ <- A.char c+ pure d'+ -- * Block list parsers -- | Parser for a csv row of [Text]. -- TODO: deal with potential for an extra '\r'@@ -194,7 +231,7 @@ -- fields :: Char -> A.Parser [Text] fields c =- field_ c `A.sepBy1` (sep c)+ field_ c `A.sepBy1` sep c -- | parser for a csv row of [Scientific] --