| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- module LinkedIn.Page.Projects where
- import Prelude
- import Data.Either (Either)
- import Data.Foldable (class Foldable, foldMap, foldlDefault, foldrDefault)
- import Data.Generic.Rep (class Generic)
- import Data.List.Types (NonEmptyList)
- import Data.Show.Generic (genericShow)
- import Data.Traversable (class Traversable, sequence, traverse, traverseDefault)
- import LinkedIn.Extractible (class Extractible)
- import LinkedIn.Output.Types (Output(..))
- import LinkedIn.Profile.Project (Project)
- import LinkedIn.Profile.Project as PP
- import LinkedIn.QueryRunner (QueryRunner', subQueryMany)
- import LinkedIn.UI.Components.ArtDecoCard (ArtDecoCardElement, queryArtDecoCard)
- import LinkedIn.UI.Elements.Types (UIElement)
- import Web.DOM (Document, Node)
- data ProjectsPage a = ProjectsPage (NonEmptyList (ArtDecoCardElement a))
- derive instance Generic (ProjectsPage a) _
- derive instance Eq a => Eq (ProjectsPage a)
- instance Show a => Show (ProjectsPage a) where
- show = genericShow
- derive instance Functor ProjectsPage
- instance Foldable ProjectsPage where
- foldMap f (ProjectsPage cards) = foldMap (foldMap f) cards
- foldl = \x -> foldlDefault x
- foldr = \x -> foldrDefault x
- instance Traversable ProjectsPage where
- sequence (ProjectsPage cards) = ado
- ts <- sequence (map sequence cards)
- in ProjectsPage ts
- traverse = \x -> traverseDefault x
- query :: QueryRunner' Document (ProjectsPage Node)
- query n = do
- cards <- subQueryMany queryArtDecoCard "section.artdeco-card > div ~ div > div > div > ul > li" n
- pure $ ProjectsPage cards
- extract ∷ ProjectsPage UIElement → Either String (NonEmptyList Project)
- extract (ProjectsPage cards) = traverse PP.fromUI cards
- instance Extractible ProjectsPage where
- query n = do
- cards <- subQueryMany queryArtDecoCard "section.artdeco-card > div ~ div > div > div > ul > li" n
- pure $ ProjectsPage cards
- extract (ProjectsPage cards) = OutProjects <$> traverse PP.fromUI cards
|