From d14e302b9acf5164e04d8dfcd4dbd0aa1da48438 Mon Sep 17 00:00:00 2001 From: Joris Date: Mon, 18 Jun 2018 11:31:22 +0200 Subject: Use default OverloadedStrings extension --- ad-listener.cabal | 9 +++++++++ src/executable/haskell/Conf.hs | 2 -- src/executable/haskell/Main.hs | 2 -- src/executable/haskell/Service/AdListener.hs | 2 -- src/executable/haskell/Service/MailService.hs | 2 -- src/executable/haskell/View/Ad.hs | 2 -- src/parser/haskell/Parser/LeboncoinParser.hs | 8 ++++---- src/parser/haskell/Parser/OuestFranceParser.hs | 8 +++----- src/parser/haskell/Parser/Utils.hs | 20 ++++++++++---------- src/test/haskell/Main.hs | 2 -- 10 files changed, 26 insertions(+), 31 deletions(-) diff --git a/ad-listener.cabal b/ad-listener.cabal index 02b9c62..f4ff007 100644 --- a/ad-listener.cabal +++ b/ad-listener.cabal @@ -13,6 +13,9 @@ Library Ghc-options: -Wall -Werror Default-language: Haskell2010 + Default-extensions: + OverloadedStrings + Build-depends: base , tagsoup @@ -33,6 +36,9 @@ Executable ad-listener Ghc-options: -Wall -Werror Default-language: Haskell2010 + Default-extensions: + OverloadedStrings + Build-depends: base , ad-listener @@ -66,6 +72,9 @@ Test-suite test Default-language: Haskell2010 Type: exitcode-stdio-1.0 + Default-extensions: + OverloadedStrings + Build-depends: base , hspec diff --git a/src/executable/haskell/Conf.hs b/src/executable/haskell/Conf.hs index e59f2a7..35064ca 100644 --- a/src/executable/haskell/Conf.hs +++ b/src/executable/haskell/Conf.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE OverloadedStrings #-} - module Conf ( parse , Conf(..) diff --git a/src/executable/haskell/Main.hs b/src/executable/haskell/Main.hs index b6705f9..fa1388c 100644 --- a/src/executable/haskell/Main.hs +++ b/src/executable/haskell/Main.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE OverloadedStrings #-} - module Main ( main ) where diff --git a/src/executable/haskell/Service/AdListener.hs b/src/executable/haskell/Service/AdListener.hs index f903f94..8a66404 100644 --- a/src/executable/haskell/Service/AdListener.hs +++ b/src/executable/haskell/Service/AdListener.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE OverloadedStrings #-} - module Service.AdListener ( start ) where diff --git a/src/executable/haskell/Service/MailService.hs b/src/executable/haskell/Service/MailService.hs index f6d9542..955dea1 100644 --- a/src/executable/haskell/Service/MailService.hs +++ b/src/executable/haskell/Service/MailService.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE OverloadedStrings #-} - module Service.MailService ( send ) where diff --git a/src/executable/haskell/View/Ad.hs b/src/executable/haskell/View/Ad.hs index ba0c550..1739386 100644 --- a/src/executable/haskell/View/Ad.hs +++ b/src/executable/haskell/View/Ad.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE OverloadedStrings #-} - module View.Ad ( renderConsoleAds , renderAds diff --git a/src/parser/haskell/Parser/LeboncoinParser.hs b/src/parser/haskell/Parser/LeboncoinParser.hs index 48eb80f..77213cb 100644 --- a/src/parser/haskell/Parser/LeboncoinParser.hs +++ b/src/parser/haskell/Parser/LeboncoinParser.hs @@ -12,13 +12,13 @@ import Parser.Utils parse :: Text -> [Ad] parse page = - catMaybes . fmap parseAd $ partitions (~== "") tags + catMaybes . fmap parseAd $ partitions (~== (T.unpack "")) tags where tags = getTagsBetween "" "" (parseTags page) parseAd :: [Tag Text] -> Maybe Ad parseAd tags = do name <- getTagTextAfter "" tags - location <- getTagAttribute "" (T.pack "content") tags + location <- getTagAttribute "" "content" tags let price = getTagTextAfter "" tags - url <- getTagAttribute "" (T.pack "href") tags - return (Ad name location price (T.concat [T.pack "https:", url])) + url <- getTagAttribute "" "href" tags + return (Ad name location price (T.concat ["https:", url])) diff --git a/src/parser/haskell/Parser/OuestFranceParser.hs b/src/parser/haskell/Parser/OuestFranceParser.hs index a7b6360..f46ed03 100644 --- a/src/parser/haskell/Parser/OuestFranceParser.hs +++ b/src/parser/haskell/Parser/OuestFranceParser.hs @@ -5,16 +5,14 @@ module Parser.OuestFranceParser import Data.Maybe (catMaybes) import Data.Text (Text) import qualified Data.Text as T - import Text.HTML.TagSoup import Model.Ad (Ad (Ad)) - import Parser.Utils parse :: Text -> [Ad] parse page = - catMaybes . fmap parseAd $ partitions (~== "") tags + catMaybes . fmap parseAd $ partitions (~== (T.unpack "")) tags where tags = getTagsBetween "" "" (parseTags page) parseAd :: [Tag Text] -> Maybe Ad @@ -22,6 +20,6 @@ parseAd tags = do name <- getTagTextAfter "" tags location <- getTagTextAfter "" tags let price = getTagTextAfter "" tags - let startUrl = T.pack "https://www.ouestfrance-immo.com/" - url <- getTagAttribute "" (T.pack "href") tags + let startUrl = "https://www.ouestfrance-immo.com/" + url <- getTagAttribute "" "href" tags return (Ad name location price (T.concat [startUrl, url])) diff --git a/src/parser/haskell/Parser/Utils.hs b/src/parser/haskell/Parser/Utils.hs index 7c433c6..461808d 100644 --- a/src/parser/haskell/Parser/Utils.hs +++ b/src/parser/haskell/Parser/Utils.hs @@ -14,29 +14,29 @@ import qualified Data.Text as T import Text.HTML.TagSoup -getTagsBefore :: String -> [Tag Text] -> [Tag Text] -getTagsBefore selector = takeWhile (~/= selector) +getTagsBefore :: Text -> [Tag Text] -> [Tag Text] +getTagsBefore selector = takeWhile (~/= (T.unpack selector)) -getTagsAfter :: String -> [Tag Text] -> [Tag Text] -getTagsAfter selector = drop 1 . dropWhile (~/= selector) +getTagsAfter :: Text -> [Tag Text] -> [Tag Text] +getTagsAfter selector = drop 1 . dropWhile (~/= (T.unpack selector)) -getTagsBetween :: String -> String -> [Tag Text] -> [Tag Text] +getTagsBetween :: Text -> Text -> [Tag Text] -> [Tag Text] getTagsBetween begin end = getTagsBefore end . getTagsAfter begin -getTagAttributes :: String -> Text -> [Tag Text] -> [Text] +getTagAttributes :: Text -> Text -> [Tag Text] -> [Text] getTagAttributes selector attribute = catMaybes . fmap (maybeTagAttribute attribute) - . filter (~== selector) + . filter (~== (T.unpack selector)) -getTagAttribute :: String -> Text -> [Tag Text] -> Maybe Text +getTagAttribute :: Text -> Text -> [Tag Text] -> Maybe Text getTagAttribute selector attribute = listToMaybe . getTagAttributes selector attribute -getTagTextAfter :: String -> [Tag Text] -> Maybe Text +getTagTextAfter :: Text -> [Tag Text] -> Maybe Text getTagTextAfter selector tags = - case findIndex (~== selector) tags of + case findIndex (~== (T.unpack selector)) tags of Just index -> fmap T.strip $ safeGetAt (index + 1) tags >>= maybeTagText Nothing -> Nothing diff --git a/src/test/haskell/Main.hs b/src/test/haskell/Main.hs index 6581d0f..fae0a63 100644 --- a/src/test/haskell/Main.hs +++ b/src/test/haskell/Main.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE OverloadedStrings #-} - import qualified Data.Text.IO as T import Test.Hspec -- cgit v1.2.3