|
|
@@ -9,8 +9,8 @@ import Data.List.NonEmpty (NonEmptyList)
|
|
|
import Data.List.NonEmpty as NEL
|
|
|
import Data.Maybe (Maybe)
|
|
|
import Data.Show.Generic (genericShow)
|
|
|
-import Data.Traversable (class Traversable, sequence, traverse, traverseDefault)
|
|
|
-import LinkedIn.QueryRunner (QueryRunner, ignoreNotFound, queryAll, queryOne)
|
|
|
+import Data.Traversable (class Traversable, sequence, traverseDefault)
|
|
|
+import LinkedIn.QueryRunner (QueryRunner, ignoreNotFound, queryAll, queryOne, subQueryMany, subQueryOne)
|
|
|
import Web.DOM (Node)
|
|
|
|
|
|
|
|
|
@@ -134,53 +134,39 @@ instance Traversable ArtDecoPvsEntity where
|
|
|
|
|
|
traverse = \x -> traverseDefault x
|
|
|
|
|
|
-queryArtDecoPvsEntitySubComponents ∷ String -> QueryRunner (NonEmptyList (ArtDecoPvsEntitySubComponent Node))
|
|
|
-queryArtDecoPvsEntitySubComponents selector n = do
|
|
|
- roots <- queryAll selector n
|
|
|
- traverse queryComponent roots
|
|
|
-
|
|
|
- where
|
|
|
- queryComponent n' = do
|
|
|
- content <- ignoreNotFound $ queryOne "span[aria-hidden=true]" n'
|
|
|
- pure $ ArtDecoPvsEntitySubComponent content
|
|
|
-
|
|
|
-queryArtDecoCenterContent ∷ String -> QueryRunner (ArtDecoCenterContent Node)
|
|
|
-queryArtDecoCenterContent selector n = do
|
|
|
- content <- queryOne selector n
|
|
|
-
|
|
|
- sc <- queryArtDecoPvsEntitySubComponents ":scope > ul > li" content
|
|
|
+queryArtDecoPvsEntitySubComponent ∷ QueryRunner (ArtDecoPvsEntitySubComponent Node)
|
|
|
+queryArtDecoPvsEntitySubComponent n = do
|
|
|
+ content <- ignoreNotFound $ queryOne "span[aria-hidden=true]" n
|
|
|
+ pure $ ArtDecoPvsEntitySubComponent content
|
|
|
|
|
|
+queryArtDecoCenterContent ∷ QueryRunner (ArtDecoCenterContent Node)
|
|
|
+queryArtDecoCenterContent n = do
|
|
|
+ sc <- subQueryMany queryArtDecoPvsEntitySubComponent ":scope > ul > li" n
|
|
|
pure $ ArtDecoCenterContent sc
|
|
|
|
|
|
-queryArtDecoCenterHeader ∷ String -> QueryRunner (ArtDecoCenterHeader Node)
|
|
|
-queryArtDecoCenterHeader selector n = do
|
|
|
- header <- queryOne selector n
|
|
|
-
|
|
|
- bold <- queryOne ":scope div.t-bold > span[aria-hidden=true]" header
|
|
|
+queryArtDecoCenterHeader ∷ QueryRunner (ArtDecoCenterHeader Node)
|
|
|
+queryArtDecoCenterHeader n = do
|
|
|
+ bold <- queryOne ":scope div.t-bold > span[aria-hidden=true]" n
|
|
|
normal <-
|
|
|
ignoreNotFound $
|
|
|
- queryOne ":scope span.t-normal:not(t-black--light) > span[aria-hidden=true]" header
|
|
|
+ queryOne ":scope span.t-normal:not(t-black--light) > span[aria-hidden=true]" n
|
|
|
light <-
|
|
|
ignoreNotFound $
|
|
|
- queryAll ":scope span.t-black--light > span[aria-hidden=true]" header
|
|
|
+ queryAll ":scope span.t-black--light > span[aria-hidden=true]" n
|
|
|
|
|
|
pure $ ArtDecoCenterHeader {bold, normal, light}
|
|
|
|
|
|
-queryArtDecoCenter ∷ String -> QueryRunner (ArtDecoCenter Node)
|
|
|
-queryArtDecoCenter selector n = do
|
|
|
- root <- queryOne selector n
|
|
|
-
|
|
|
- h <- queryArtDecoCenterHeader ":scope > div" root
|
|
|
- c <- queryArtDecoCenterContent ":scope > div.pvs-entity__sub-components" root
|
|
|
-
|
|
|
- pure $ ArtDecoCenter {header: h, content: c}
|
|
|
+queryArtDecoCenter ∷ QueryRunner (ArtDecoCenter Node)
|
|
|
+queryArtDecoCenter n = do
|
|
|
+ header <- subQueryOne queryArtDecoCenterHeader ":scope > div" n
|
|
|
+ content <- subQueryOne queryArtDecoCenterContent ":scope > div.pvs-entity__sub-components" n
|
|
|
|
|
|
-queryArtDecoPvsEntity ∷ String -> QueryRunner (ArtDecoPvsEntity Node)
|
|
|
-queryArtDecoPvsEntity selector n = do
|
|
|
- root <- queryOne selector n
|
|
|
- c <- queryArtDecoCenter ":scope > div.display-flex" root
|
|
|
+ pure $ ArtDecoCenter {header, content}
|
|
|
|
|
|
- pure $ ArtDecoPvsEntity {side: unit, center: c}
|
|
|
+queryArtDecoPvsEntity ∷ QueryRunner (ArtDecoPvsEntity Node)
|
|
|
+queryArtDecoPvsEntity n = do
|
|
|
+ center <- subQueryOne queryArtDecoCenter ":scope > div.display-flex" n
|
|
|
+ pure $ ArtDecoPvsEntity {side: unit, center}
|
|
|
|
|
|
toHeaderBold ∷ forall a. ArtDecoPvsEntity a → a
|
|
|
toHeaderBold (ArtDecoPvsEntity {
|