Просмотр исходного кода

Start adding Center Content parsing

jherve 2 лет назад
Родитель
Сommit
4a42a13b46
1 измененных файлов с 21 добавлено и 4 удалено
  1. 21 4
      src/LinkedIn/ArtDecoCard.purs

+ 21 - 4
src/LinkedIn/ArtDecoCard.purs

@@ -38,6 +38,21 @@ queryAndDetachMany selector n = do
       nodes <- traverse toDetached nodes
       pure $ Just nodes
 
+data ArtDecoPvsEntitySubComponents = ArtDecoPvsEntitySubComponents (Maybe (NonEmptyList DetachedNode))
+derive instance Generic ArtDecoPvsEntitySubComponents _
+instance Show ArtDecoPvsEntitySubComponents where
+  show = genericShow
+
+data ArtDecoCenterContent = ArtDecoCenterContent (Maybe (NonEmptyList DetachedNode))
+derive instance Generic ArtDecoCenterContent _
+instance Show ArtDecoCenterContent where
+  show = genericShow
+
+parseArtDecoCenterContent ∷ Node → Effect (Either String ArtDecoCenterContent)
+parseArtDecoCenterContent n = do
+  list <- queryAndDetachMany ":scope .pvs-entity__sub-components" n
+  pure $ Right (ArtDecoCenterContent list)
+
 data ArtDecoCenterHeader = ArtDecoCenterHeader {
   bold :: DetachedNode,
   normal :: Maybe DetachedNode,
@@ -60,7 +75,7 @@ parseArtDecoCenterHeader n = do
 
 data ArtDecoCenter = ArtDecoCenter {
   header :: ArtDecoCenterHeader,
-  content :: Unit
+  content :: ArtDecoCenterContent
 }
 
 derive instance Generic ArtDecoCenter _
@@ -78,10 +93,12 @@ queryOneAndParse selector parser n = do
 parseArtDecoCenter :: Node -> Effect (Either String ArtDecoCenter)
 parseArtDecoCenter n = do
   header <- queryOneAndParse ":scope > div" parseArtDecoCenterHeader n
+  content <- queryOneAndParse ":scope > div ~ div" parseArtDecoCenterContent n
 
-  pure $ case header of
-    Left l -> Left l
-    Right header -> Right (ArtDecoCenter {header: header, content: unit})
+  pure $ case header, content of
+    Left l, _ -> Left l
+    _, Left l -> Left l
+    Right header, Right content -> Right (ArtDecoCenter {header: header, content: content})
 
 data ArtDecoPvsEntity = ArtDecoPvsEntity {
   side :: Unit,