imm 1.0.0.0 → 1.0.1.0
raw patch · 5 files changed
+53/−49 lines, 5 filesdep ~chunked-datadep ~mono-traversable
Dependency ranges changed: chunked-data, mono-traversable
Files
- imm.cabal +3/−3
- src/bin/Executable.hs +0/−2
- src/lib/Imm/Core.hs +3/−3
- src/lib/Imm/Prelude.hs +46/−40
- src/lib/Imm/Pretty.hs +1/−1
imm.cabal view
@@ -1,7 +1,7 @@ name: imm-version: 1.0.0.0+version: 1.0.1.0 synopsis: Execute arbitrary actions for each unread element of RSS/Atom feeds---description:+description: Cf README file homepage: https://github.com/k0ral/imm license: OtherLicense license-file: LICENSE@@ -39,7 +39,7 @@ Imm.Options Imm.Pretty Paths_imm- build-depends: aeson, atom-conduit, base == 4.*, bytestring, case-insensitive, chunked-data, comonad, compdata, conduit, conduit-combinators, conduit-parse, connection, containers, directory, dyre, directory, exceptions, fast-logger, filepath, free, hashable, HaskellNet, HaskellNet-SSL >= 0.3.3.0, http-client, http-client-tls, http-types, mime-mail, monoid-subclasses, mono-traversable, network, opml-conduit, optparse-applicative, rainbow, rainbox, rss-conduit, text, transformers, time, timerep >= 2.0.0.0, tls, uri-bytestring, xml, xml-conduit, ansi-wl-pprint+ build-depends: aeson, atom-conduit, base == 4.*, bytestring, case-insensitive, chunked-data >= 0.3.0, comonad, compdata, conduit, conduit-combinators, conduit-parse, connection, containers, directory >= 1.2.3.0, dyre, exceptions, fast-logger, filepath, free, hashable, HaskellNet, HaskellNet-SSL >= 0.3.3.0, http-client, http-client-tls, http-types, mime-mail, monoid-subclasses, mono-traversable >= 1.0.0, network, opml-conduit, optparse-applicative, rainbow, rainbox, rss-conduit, text, transformers, time, timerep >= 2.0.0.0, tls, uri-bytestring, xml, xml-conduit, ansi-wl-pprint -- Build-tools: hs-source-dirs: src/lib ghc-options: -Wall -fno-warn-unused-do-bind
src/bin/Executable.hs view
@@ -5,8 +5,6 @@ -- {{{ Imports import Imm import Imm.Database.JsonFile-import Imm.Feed-import Imm.Hooks import Imm.HTTP.Simple import Imm.Logger.Simple import Imm.Prelude
src/lib/Imm/Core.hs view
@@ -74,7 +74,7 @@ => [FeedID] -> m () showFeed feedIDs = do feeds <- Database.fetchList FeedTable feedIDs- if onull feeds then logWarning "No subscription" else putBox $ entryTableToBox feeds+ if null feeds then logWarning "No subscription" else putBox $ entryTableToBox feeds -- | Register the given feed URI in database subscribe :: (MonadIO m, LoggerF :<: f, Functor f, MonadFree f m, DatabaseF' :<: f, MonadCatch m)@@ -134,7 +134,7 @@ isRead :: (Functor f, MonadCatch m, DatabaseF' :<: f, MonadFree f m) => FeedID -> FeedElement -> m Bool isRead feedID element = do DatabaseEntry _ _ readHashes lastCheck <- Database.fetch FeedTable feedID- let matchHash = not $ onull $ (setFromList (getHashes element) :: Set Int) `intersection` readHashes+ let matchHash = not $ null $ (setFromList (getHashes element) :: Set Int) `intersection` readHashes matchDate = case (lastCheck, getDate element) of (Nothing, _) -> False (_, Nothing) -> False@@ -157,7 +157,7 @@ -- * Boxes putBox :: (Orientation a, MonadIO m) => Box a -> m ()-putBox = void . io . mapM ByteString.putStr . chunksToByteStrings toByteStringsColors256 . otoList . render+putBox = io . mapM_ ByteString.putStr . chunksToByteStrings toByteStringsColors256 . toList . render cell :: Text -> Cell cell a = Cell (singleton $ singleton $ chunk a) top left mempty
src/lib/Imm/Prelude.hs view
@@ -13,55 +13,61 @@ module Imm.Prelude (module Imm.Prelude, module X) where -- {{{ Imports-import Control.Applicative as X+import Control.Applicative as X import Control.Comonad import Control.Comonad.Cofree-import Control.Monad as X hiding (filterM, replicateM)-import Control.Monad.Catch as X-import Control.Monad.IO.Class as X-import Control.Monad.Trans.Free (FreeF (..), FreeT (..))+import Control.Monad as X (MonadPlus (..), unless,+ void, when)+import Control.Monad.Catch as X+import Control.Monad.IO.Class as X+import Control.Monad.Trans.Free (FreeF (..), FreeT (..)) -import Data.Bifunctor as X-import qualified Data.ByteString as B (ByteString ())-import qualified Data.ByteString.Lazy as LB (ByteString ())-import Data.Comp.Ops as X-import Data.Containers as X+import Data.Bifunctor as X+import qualified Data.ByteString as B (ByteString ())+import qualified Data.ByteString.Lazy as LB (ByteString ())+import Data.Comp.Ops as X+import Data.Containers as X+import Data.Foldable as X (forM_) import Data.Functor.Identity-import Data.IOData as X-import Data.Map as X (Map)-import Data.Maybe as X hiding (catMaybes)-import Data.Monoid as X-import Data.Monoid.Textual as X (TextualMonoid (), fromText)-import Data.MonoTraversable as X-import Data.Ord as X--- import Data.Semigroup as X hiding (option)-import Data.Sequences as X-import Data.Sequences.Lazy as X-import Data.String as X (IsString (..))-import qualified Data.Text as T (Text ())-import qualified Data.Text.Lazy as LT (Text ())-import Data.Textual.Encoding as X-import Data.Typeable as X+import Data.IOData as X+import Data.Map as X (Map)+import Data.Maybe as X hiding (catMaybes)+import Data.Monoid as X+import Data.Monoid.Textual as X (TextualMonoid (),+ fromText)+import Data.MonoTraversable.Unprefixed as X hiding (forM_, mapM_)+import Data.Ord as X+import Data.Sequences as X+import Data.String as X (IsString (..))+import qualified Data.Text as T (Text ())+import qualified Data.Text.Lazy as LT (Text ())+import Data.Traversable as X (forM)+import Data.Typeable as X -import qualified GHC.Show as Show+import qualified GHC.Show as Show -import Prelude as X hiding (break, drop,- dropWhile, elem, filter,- getLine, lines, log, lookup,- notElem, readFile,- replicate, reverse, show,- span, splitAt, take,- takeWhile, unlines, unwords,- words, writeFile)+import Prelude as X hiding (all, and, any,+ break, concat, concatMap,+ drop, dropWhile, elem,+ filter, foldMap, foldr,+ getLine, length, lines,+ log, lookup, notElem,+ null, or, product,+ readFile, replicate,+ reverse, sequence_, show,+ span, splitAt, sum, take,+ takeWhile, unlines,+ unwords, words,+ writeFile) -import System.IO as X (stderr, stdout)+import System.IO as X (stderr, stdout) -import Text.PrettyPrint.ANSI.Leijen as X (Doc, Pretty (..), angles,- brackets, equals, hsep,- indent, space, text, vsep,- (<+>))+import Text.PrettyPrint.ANSI.Leijen as X (Doc, Pretty (..), angles,+ brackets, equals, hsep,+ indent, space, text,+ vsep, (<+>)) -import Text.PrettyPrint.ANSI.Leijen (line)+import Text.PrettyPrint.ANSI.Leijen (line) -- }}} -- * Free monad utilities
src/lib/Imm/Pretty.hs view
@@ -55,7 +55,7 @@ prettyPerson :: AtomPerson -> Doc prettyPerson p = text (fromText $ toNullable $ personName p) <> email where- email = if onull $ personEmail p+ email = if null $ personEmail p then mempty else space <> angles (text $ fromText $ personEmail p)