diff --git a/README.md b/README.md index 93a4f5b..0fcf615 100644 --- a/README.md +++ b/README.md @@ -30,10 +30,10 @@ If you run `nix develop` you get a set up kakoune with an lsp. Be aware this depends on your local cabal cache. # TODO -- [] Better E-Mail generation -- [] Add the nix modules to the flake -- [] Better Error handling - - [] Find out which exceptions the SMTP module throws -- [] Split config into secrets and non secret config - - [] make the pad url configurable -- [x] Clean up Strict vs Lazy Text +- Better E-Mail generation +- Add the nix modules to the flake +- Better Error handling + - Find out which exceptions the SMTP module throws +- Split config into secrets and non secret config + - make the pad url configurable +- clean up Text vs lazy Text \ No newline at end of file diff --git a/app/Main.hs b/app/Main.hs index 1862e64..e311857 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -22,7 +22,7 @@ getToday :: IO Day getToday = utctDay <$> getCurrentTime reportErrorLocal :: MonadIO m => String -> m () -reportErrorLocal = liftIO . hPutStr stderr +reportErrorLocal err = liftIO $ hPutStr stderr err reportErrorMail :: MonadIO m => Config -> String -> m () reportErrorMail config error' = send (mailDomain config) (mailUsername config) (mailPassword config) (mailErrorTo config) (mailFrom config) "choirMail Error" (LT.pack error') @@ -31,7 +31,7 @@ findChoirDay :: Day -> [MailRecord] -> Either String MailRecord findChoirDay today table = maybe (Left "Keine Probe :(") (Right) - (L.find ((isChoirThisWeek today) . date) table) + (L.find ((isChoirThisWeek today) .date) table) main' :: App () @@ -63,7 +63,7 @@ main = do Left error' -> reportErrorLocal error' mailText :: MailRecord -> LT.Text -mailText record = LT.concat ["Guten Morgen,\n\n" +mailText record = LT.fromStrict $T.concat ["Guten Morgen,\n\n" , announcement record ,"\n\ndiesen Donnerstag\n\nDurchsingen: " ,song1 record diff --git a/app/TableParser.hs b/app/TableParser.hs index 3484c8a..a422301 100644 --- a/app/TableParser.hs +++ b/app/TableParser.hs @@ -1,24 +1,22 @@ -{-# LANGUAGE RecordWildCards #-} module TableParser(MailRecord(..), parseBString, parseTable) where - + import qualified Text.Parsec as P -- import qualified Text.Parsec.Char as P import qualified Text.Parsec.Text as P -import qualified Data.Text.Lazy as LT -import qualified Data.Text as ST -import qualified Data.Text.Encoding as ST +import qualified Data.Text as T +import qualified Data.Text.Encoding as T import qualified Data.Time.Calendar as D import qualified Data.ByteString as B -import Control.Monad(void) +import Control.Monad data MailRecord = MailRecord { date :: D.Day, - voice1 :: LT.Text, - voice2 :: LT.Text, - song1 :: LT.Text, - song2 :: LT.Text, - announcement :: LT.Text + voice1 :: T.Text, + voice2 :: T.Text, + song1 :: T.Text, + song2 :: T.Text, + announcement :: T.Text } deriving (Show) seperator :: Char @@ -27,8 +25,8 @@ seperator = '\t' sepParser :: P.Parser () sepParser = void $ P.char seperator -textCellParser :: P.Parser LT.Text -textCellParser = fmap LT.pack $ P.many $ P.noneOf [seperator,'\n','\r'] +textCellParser :: P.Parser T.Text +textCellParser = fmap T.pack $ P.many $ P.noneOf [seperator,'\n','\r'] dateCellParser :: P.Parser D.Day dateCellParser = do @@ -60,8 +58,8 @@ parseRow = do sepParser song2 <- textCellParser sepParser - announcement <- textCellParser - return $ MailRecord{..} + announcments <- textCellParser + return $ MailRecord date voice1 voice2 song1 song2 announcments parseFirstRow :: P.Parser () parseFirstRow = void (P.string "Datum\tStimmprobe 1\tStimmprobe 2\tLied 1\tLied 2\tWeitere Ansagen" >> P.endOfLine) @@ -73,7 +71,7 @@ parseTable = do P.eof return x -textToMailRecord :: ST.Text -> Either String [MailRecord] +textToMailRecord :: T.Text -> Either String [MailRecord] textToMailRecord t = case P.parse parseTable "" t of Left x -> Left $ show x Right x -> Right x @@ -84,7 +82,7 @@ parseBString t = do text <- toText t textToMailRecord text -toText :: B.ByteString -> Either String ST.Text -toText t = case ST.decodeUtf8' t of +toText :: B.ByteString -> Either String T.Text +toText t = case T.decodeUtf8' t of Left x -> Left $ show x Right x -> Right x diff --git a/flake.lock b/flake.lock index 54dd5db..a47dca9 100644 --- a/flake.lock +++ b/flake.lock @@ -17,11 +17,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1668563542, - "narHash": "sha256-FrMNezX3v4qLkCg+j1e3Ei/FXOSQP4Chq4OOdttIEns=", + "lastModified": 1667639549, + "narHash": "sha256-frqZKSG/933Ctwl9voSZnXDwo8CqddXcjQhnCzwNqaM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ce89321950381ec845e56c6a6d1340abe5cd7a65", + "rev": "cae3751e9f74eea29c573d6c2f14523f41c2821a", "type": "github" }, "original": {