diff options
Diffstat (limited to 'src/Parser/Resume.hs')
-rw-r--r-- | src/Parser/Resume.hs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/Parser/Resume.hs b/src/Parser/Resume.hs new file mode 100644 index 0000000..bd73912 --- /dev/null +++ b/src/Parser/Resume.hs @@ -0,0 +1,27 @@ +module Parser.Resume + ( parseResumes + ) where + +import Data.Maybe (catMaybes) + +import Text.HTML.TagSoup + +import Model.Resume + +import Parser.Utils + +parseResumes :: String -> [Resume] +parseResumes page = + case sections (~== "<div class=list-lbc>") (parseTags page) of + [] -> + [] + sectionTags : _ -> + let lbcTags = takeWhile (~/= "<div id=alertesCartouche>") sectionTags + in catMaybes . fmap parseResume $ partitions (~== "<a>") lbcTags + +parseResume :: [Tag String] -> Maybe Resume +parseResume item = do + name <- getTagText "<h2 class=title>" item + let price = getTagText "<div class=price>" item + url <- getTagAttribute "<a>" "href" item + return Resume { name = name, price = price, url = url } |