aboutsummaryrefslogtreecommitdiff
path: root/src/Parser/Resume.hs
blob: 6cd4415af783e22e8125f5fab9c686754df968b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
module Parser.Resume
  ( parseResumes
  ) where

import Data.Maybe (catMaybes)
import qualified Data.Text as T

import Text.HTML.TagSoup

import Model.Resume

import Parser.Utils

parseResumes :: T.Text -> [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 T.Text] -> Maybe Resume
parseResume item = do
  name <- getTagTextAfter "<h2 class=title>" item
  let price = getTagTextAfter "<div class=price>" item
  url <- getTagAttribute "<a>" (T.pack "href") item
  return Resume { name = name, price = price, url = T.unpack url }