From 95d50b25c990e8c945ce2507b16ff3c8b039d286 Mon Sep 17 00:00:00 2001 From: Rutger Broekhoff Date: Mon, 25 Aug 2025 19:48:19 +0200 Subject: OCaml --- app/Import/Ing/Shared.hs | 44 -------------------------------------------- 1 file changed, 44 deletions(-) delete mode 100644 app/Import/Ing/Shared.hs (limited to 'app/Import/Ing/Shared.hs') diff --git a/app/Import/Ing/Shared.hs b/app/Import/Ing/Shared.hs deleted file mode 100644 index b5d1703..0000000 --- a/app/Import/Ing/Shared.hs +++ /dev/null @@ -1,44 +0,0 @@ -module Import.Ing.Shared where - -import Data.Attoparsec.Text qualified as AP -import Data.Char (digitToInt, ord) -import Data.Csv qualified as C -import Data.Decimal (Decimal, DecimalRaw (Decimal), normalizeDecimal) -import Data.Iban (Iban, mkIban) -import Data.Text qualified as T -import Data.Time.Calendar (Day) -import Data.Time.Clock (UTCTime) -import Data.Time.Format (defaultTimeLocale, parseTimeM) -import Data.Time.Zones (TZ, localTimeToUTCTZ) - -data DebitCredit = Debit | Credit deriving (Show) - -scsvOptions :: C.DecodeOptions -scsvOptions = C.defaultDecodeOptions {C.decDelimiter = fromIntegral (ord ';')} - -maybeCP :: (T.Text -> C.Parser a) -> T.Text -> C.Parser (Maybe a) -maybeCP p t = if T.null t then return Nothing else Just <$> p t - -parseDecimalM :: (MonadFail m) => T.Text -> m Decimal -parseDecimalM = - either fail return - . AP.parseOnly - ( do - decPart <- AP.decimal - _ <- AP.char ',' - f1 <- AP.digit - f2 <- AP.digit - AP.endOfInput - let fracPart = fromIntegral $ digitToInt f1 * 10 + digitToInt f2 - return $ normalizeDecimal (Decimal 2 (decPart * 100 + fracPart)) - ) - -parseIbanM :: (MonadFail m) => T.Text -> m Iban -parseIbanM = either fail return . mkIban - -parseDateM :: (MonadFail m) => String -> T.Text -> m Day -parseDateM fmt = parseTimeM False defaultTimeLocale fmt . T.unpack - -parseTimestampM :: (MonadFail m) => String -> TZ -> T.Text -> m UTCTime -parseTimestampM fmt amsTz t = do - localTimeToUTCTZ amsTz <$> parseTimeM False defaultTimeLocale fmt (T.unpack t) -- cgit v1.2.3