Bläddra i källkod

Improve a bit parsing code

jherve 2 år sedan
förälder
incheckning
f766319cd7
1 ändrade filer med 13 tillägg och 8 borttagningar
  1. 13 8
      src/LinkedIn/ArtDecoCard.purs

+ 13 - 8
src/LinkedIn/ArtDecoCard.purs

@@ -67,16 +67,21 @@ derive instance Generic ArtDecoCenter _
 instance Show ArtDecoCenter where
   show = genericShow
 
+queryOneAndParse ∷ ∀ a. String → (Node → Effect (Either String a)) → Node → Effect (Either String a)
+queryOneAndParse selector parser n = do
+  node <- queryOne selector n
+
+  case node of
+    Nothing -> pure $ Left $ "Could not find node with selector " <> selector
+    Just node -> parser node
+
 parseArtDecoCenter :: Node -> Effect (Either String ArtDecoCenter)
 parseArtDecoCenter n = do
-  header <- queryOne ":scope > div" n
-  case header of
-    Nothing -> pure $ Left "Could not parse ArtDecoCenter"
-    Just header -> do
-      header <- parseArtDecoCenterHeader header :: Effect (Either String ArtDecoCenterHeader)
-      pure $ case header of
-        Left l -> Left l
-        Right header -> Right (ArtDecoCenter {header: header, content: unit})
+  header <- queryOneAndParse ":scope > div" parseArtDecoCenterHeader n
+
+  pure $ case header of
+    Left l -> Left l
+    Right header -> Right (ArtDecoCenter {header: header, content: unit})
 
 data ArtDecoPvsEntity = ArtDecoPvsEntity {
   side :: Unit,