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

+ 12 - 9
src/LinkedIn.purs

@@ -37,23 +37,26 @@ queryAll selector doc = do
 
 -- First pass of naming ; from here we know what we are looking for
 
-data LinkedInUIElement =
-  ArtDecoCardRaw Node
-  | ArtDecoTabRaw Node
+data LinkedInUIElementType = LinkedInUIArtDecoCard | LinkedInUIArtDecoTab
+
+instance Show LinkedInUIElementType where
+  show LinkedInUIArtDecoCard = "ArtDecoCard"
+  show LinkedInUIArtDecoTab = "ArtDecoTab"
+
+data LinkedInUIElement = LinkedInUIElement LinkedInUIElementType Node
 
 instance Show LinkedInUIElement where
-  show (ArtDecoCardRaw n) = "ArtDecoCardRaw(" <> nodeName n <> ")"
-  show (ArtDecoTabRaw n) = "ArtDecoTabRaw(" <> nodeName n <> ")"
+  show (LinkedInUIElement typ n) = "LinkedInUIElement(" <> show typ <> ", " <> nodeName n <> ")"
 
 getArtDecoCards ∷ Document → Effect (Maybe (NonEmptyList LinkedInUIElement))
-getArtDecoCards = queryAll' ArtDecoCardRaw "section.artdeco-card > div ~ div > div > div > ul > li"
+getArtDecoCards = queryAll' LinkedInUIArtDecoCard "section.artdeco-card > div ~ div > div > div > ul > li"
 
 getArtDecoTabs ∷ Document → Effect (Maybe (NonEmptyList LinkedInUIElement))
-getArtDecoTabs = queryAll' ArtDecoTabRaw "div.artdeco-tabs > div > div > div > div > ul > li"
+getArtDecoTabs = queryAll' LinkedInUIArtDecoTab "div.artdeco-tabs > div > div > div > div > ul > li"
 
-queryAll' ∷ ∀ b. (Node → b) → String → Document → Effect (Maybe (NonEmptyList b))
+queryAll' ∷ LinkedInUIElementType → String → Document → Effect (Maybe (NonEmptyList LinkedInUIElement))
 queryAll' constructor selector doc = do
   nodes <- queryAll selector doc
   pure case nodes of
     Nothing -> Nothing
-    Just cards -> Just $ map constructor cards
+    Just cards -> Just $ map (LinkedInUIElement constructor) cards