jherve преди 1 година
родител
ревизия
f533a608d9
променени са 2 файла, в които са добавени 17 реда и са изтрити 9 реда
  1. 4 8
      src/Content.purs
  2. 13 1
      src/LinkedIn/Page/Skills.purs

+ 4 - 8
src/Content.purs

@@ -16,11 +16,11 @@ import LinkedIn.ArtDecoCard (queryArtDecoCard)
 import LinkedIn.ArtDecoTab (queryArtDecoTab)
 import LinkedIn.DetachedNode (toDetached)
 import LinkedIn.JobsUnifiedTopCard (queryJobsUnifiedTopCardElement)
+import LinkedIn.Page.Skills as PageS
 import LinkedIn.Profile.Project as PP
 import LinkedIn.Profile.Skill as PS
 import LinkedIn.Profile.WorkExperience as PWE
 import LinkedIn.QueryRunner (runQuery)
-import LinkedIn.Page.Skills (SkillsPage(..), querySkillsPage)
 import Yoga.Tree (Tree, showTree)
 
 main :: Effect Unit
@@ -72,16 +72,12 @@ main = do
           log "parsed OK"
           logShow detached
 
-  skillsNode <- runQuery $ querySkillsPage dom
+  skillsNode <- runQuery $ PageS.querySkillsPage dom
   case skillsNode of
     Left l' -> logShow l'
     Right q -> do
-      detached <- traverse toDetached q
-      log "skills OK"
-      logShow detached
-      let
-        SkillsPage tabs = detached
-      logShow $ map PS.fromUI tabs
+      skills <- PageS.extract q
+      logShow skills
 
 maybeShowTree ∷ Maybe (NonEmptyList LinkedInUIElement) → Effect String
 maybeShowTree Nothing = pure "nope"

+ 13 - 1
src/LinkedIn/Page/Skills.purs

@@ -2,12 +2,17 @@ module LinkedIn.Page.Skills where
 
 import Prelude
 
+import Data.Either (Either)
 import Data.Foldable (class Foldable, foldMap, foldlDefault, foldrDefault)
 import Data.Generic.Rep (class Generic)
 import Data.List.Types (NonEmptyList)
 import Data.Show.Generic (genericShow)
-import Data.Traversable (class Traversable, sequence, traverseDefault)
+import Data.Traversable (class Traversable, sequence, traverse, traverseDefault)
+import Effect (Effect)
 import LinkedIn.ArtDecoTab (ArtDecoTabElement, queryArtDecoTab)
+import LinkedIn.DetachedNode (toDetached)
+import LinkedIn.Profile.Skill (Skill)
+import LinkedIn.Profile.Skill as PS
 import LinkedIn.QueryRunner (QueryRunner', subQueryMany)
 import Web.DOM (Document, Node)
 
@@ -36,3 +41,10 @@ querySkillsPage :: QueryRunner' Document (SkillsPage Node)
 querySkillsPage n = do
   tabs <- subQueryMany queryArtDecoTab "div.artdeco-tabs > div > div > div > div > ul > li" n
   pure $ SkillsPage tabs
+
+extract ∷ SkillsPage Node → Effect (Either String (NonEmptyList Skill))
+extract p = do
+  detached <- traverse toDetached p
+  let
+    SkillsPage tabs = detached
+  pure $ traverse PS.fromUI tabs