clit 0.4.0.3 → 0.4.0.4
raw patch · 4 files changed
+18/−8 lines, 4 filesdep −aesondep ~clitdep ~optparse-applicative
Dependencies removed: aeson
Dependency ranges changed: clit, optparse-applicative
Files
- clit.cabal +3/−4
- src/Web/Tweet/Types.hs +0/−3
- src/Web/Tweet/Utils.hs +14/−0
- stack.yaml +1/−1
clit.cabal view
@@ -1,5 +1,5 @@ name: clit-version: 0.4.0.3+version: 0.4.0.4 cabal-version: >=1.10 build-type: Simple license: BSD3@@ -33,14 +33,13 @@ Web.Tweet.Exec build-depends: base >=4.7 && <5,- aeson >=1.0.2.1 && <1.1, http-client-tls >=0.3.4 && <0.4, http-client >=0.5.6.1 && <0.6, http-types >=0.9.1 && <0.10, authenticate-oauth ==1.6.*, bytestring >=0.10.8.1 && <0.11, split >=0.2.3.1 && <0.3,- optparse-applicative >=0.13.1.0 && <0.14,+ optparse-applicative >=0.13.2.0 && <0.14, lens >=4.15.1 && <4.16, data-default >=0.7.1.1 && <0.8, text >=1.2.2.1 && <1.3,@@ -64,7 +63,7 @@ main-is: Main.hs build-depends: base >=4.9.1.0 && <4.10,- clit >=0.4.0.3 && <0.5+ clit >=0.4.0.4 && <0.5 default-language: Haskell2010 hs-source-dirs: app
src/Web/Tweet/Types.hs view
@@ -5,7 +5,6 @@ -- | Exports the `Tweet` type, a datatype for building tweets easily module Web.Tweet.Types where -import Data.Aeson import GHC.Generics import Control.Lens import Data.Default@@ -26,5 +25,3 @@ type Timeline = [(String, String, String, String)] makeLenses ''Tweet--instance ToJSON Tweet where
src/Web/Tweet/Utils.hs view
@@ -6,12 +6,15 @@ import Text.Megaparsec.Lexer as L import Text.Megaparsec import Data.Char+import Data.List import Data.Monoid import Data.Maybe import Web.Tweet.Types import Control.Monad import Text.PrettyPrint.ANSI.Leijen hiding ((<$>), char, (<>), string) import Control.Lens.Tuple+import Control.Lens hiding (noneOf)+import Data.Function -- `FIXME` parseDMs = zip <$> (extractEvery 2 <$> filterStr "screen_name") <*> (filterStr "text")@@ -34,6 +37,15 @@ parseTweet :: Parser Timeline parseTweet = many (try getData <|> (const ("","","","") <$> eof)) +hits = sortFaves . filterRTs++filterRTs :: Timeline -> Timeline+filterRTs = filter ((/="RT") . take 2 . (view _2))++sortFaves :: Timeline -> Timeline+sortFaves = sortBy compareFavorites+ where compareFavorites = on compare ((read :: String -> Int) . (view _3))+ -- | Parse a single tweet's: name, text, fave count, retweet count getData :: Parser (String, String, String, String) getData = do@@ -73,6 +85,7 @@ string "\\n" pure '\n' +-- TODO --emoji :: Parser Char --emoji = do -- string "\\u"@@ -85,6 +98,7 @@ num <- fromHex . filterEmoji <$> count 4 anyChar pure . toEnum . fromIntegral $ num +-- | ignore emoji filterEmoji str = if head str == 'd' then "FFFD" else str -- | Parse escaped characters
stack.yaml view
@@ -15,7 +15,7 @@ # resolver: # name: custom-snapshot # location: "./custom-snapshot.yaml"-resolver: lts-8.4+resolver: lts-8.5 # User packages to be built. # Various formats can be used as shown in the example below.