Przeglądaj źródła

Add run functions

jherve 1 rok temu
rodzic
commit
262cee8fe1
1 zmienionych plików z 16 dodań i 5 usunięć
  1. 16 5
      src/LinkedIn/ArtDecoCardAlt.purs

+ 16 - 5
src/LinkedIn/ArtDecoCardAlt.purs

@@ -2,17 +2,18 @@ module LinkedIn.ArtDecoCardAlt where
 
 import Prelude
 
-import Data.Either (note)
+import Data.Either (Either, note)
 import Data.Generic.Rep (class Generic)
 import Data.List (List)
 import Data.List.Types (NonEmptyList)
 import Data.Maybe (Maybe)
 import Data.Show.Generic (genericShow)
+import Effect (Effect)
 import LinkedIn (DetachedNode)
 import LinkedIn.ArtDeco (ArtDecoPvsEntity, parseArtDecoPvsEntity)
 import LinkedIn.ArtDeco as AD
 import LinkedIn.Types (Parser, QueryError(..), QueryRunner)
-import LinkedIn.Utils (queryOne, queryOneAndParse)
+import LinkedIn.Utils (queryAll, queryOne, queryOneAndParse)
 import Web.DOM (Node)
 import Web.DOM.Node (nodeName)
 
@@ -31,10 +32,20 @@ instance Functor ArtDecoCardAltElement where
   map f (ArtDecoCardAltElement {pvs_entity}) =
     ArtDecoCardAltElement ({pvs_entity: f pvs_entity})
 
-queryArtDecoCardAlt :: QueryRunner (ArtDecoCardAltElement Node)
+queryArtDecoCardAlt :: Node → Effect (Either QueryError (ArtDecoCardAltElement Node))
 queryArtDecoCardAlt n = do
-  pvs <- queryOne ":scope div.pvs-entity--padded" n
+  pvs <- runOne ":scope div.pvs-entity--padded" n
 
   pure $ ado
-    p <- note (QNodeNotFoundError "stuff") pvs
+    p <- pvs
   in ArtDecoCardAltElement {pvs_entity: p}
+
+runOne ∷ String → Node → Effect (Either QueryError Node)
+runOne selector node = do
+  maybeNode <- queryOne selector node
+  pure $ note (QNodeNotFoundError selector) maybeNode
+
+runAll ∷ String → Node → Effect (Either QueryError (NonEmptyList Node))
+runAll selector node = do
+  maybeNodes <- queryAll selector node
+  pure $ note (QNodeListNotFoundError selector) maybeNodes