Procházet zdrojové kódy

Add asPrunedTree(s) functions

jherve před 2 roky
rodič
revize
71844349c6
2 změnil soubory, kde provedl 22 přidání a 7 odebrání
  1. 5 6
      src/Content.purs
  2. 17 1
      src/LinkedIn.purs

+ 5 - 6
src/Content.purs

@@ -7,7 +7,6 @@ import Prelude
 import Browser.DOM (getBrowserDom)
 import Data.Maybe (Maybe(..))
 import Effect (Effect)
-import Effect.Class.Console (logShow)
 import Effect.Console (log)
 import Yoga.Tree (showTree)
 
@@ -30,9 +29,9 @@ main = do
   log sTopCards
 
 maybeShow ∷ String → Maybe (NonEmptyList LinkedInUIElement) → Effect String
-maybeShow errorMsg els =
-  case els of
+maybeShow errorMsg els = do
+  trees <- asPrunedTrees els
+  case trees of
     Nothing -> pure errorMsg
-    Just cards -> do
-      tree <- asTree $ head cards
-      pure $ showTree $ cutBranches filterEmpty tree
+    Just ts -> do
+      pure $ showTree $ head ts

+ 17 - 1
src/LinkedIn.purs

@@ -6,17 +6,19 @@ import Yoga.Tree
 import Control.Comonad.Cofree (head, tail)
 import Data.Array as A
 import Data.List (List(..), (:))
+import Data.List as L
 import Data.List.NonEmpty as NEL
 import Data.List.Types (NonEmptyList)
 import Data.Maybe (Maybe(..), fromJust)
 import Data.String (Pattern(..), joinWith)
 import Data.String as S
 import Data.String.CodeUnits (fromCharArray, toCharArray)
-import Data.Traversable (sequence)
+import Data.Traversable (sequence, traverse)
 import Data.Tuple (Tuple(..))
 import Effect (Effect)
 import Partial.Unsafe (unsafePartial)
 import Web.DOM (Document, Element, Node)
+import Web.DOM.Document (origin)
 import Web.DOM.Document as D
 import Web.DOM.Element as E
 import Web.DOM.Node (nodeName, nodeType, textContent)
@@ -24,6 +26,7 @@ import Web.DOM.Node as N
 import Web.DOM.NodeList as NL
 import Web.DOM.NodeType (NodeType(..))
 import Web.DOM.ParentNode (QuerySelector(..), querySelector, querySelectorAll)
+import Yoga.Tree.Zipper as Z
 
 -- A light abstraction layer above the DOM manipulation API
 
@@ -160,3 +163,16 @@ filterEmpty t = case head t of
   DetachedElement {tag, content: ""} | tag /= "BR" -> false
   DetachedElement {classes} -> L.all (_ /= "visually-hidden") classes
   _ -> true
+
+asPrunedTrees :: Maybe (NonEmptyList LinkedInUIElement) → Effect (Maybe (NonEmptyList (Tree DetachedNode)))
+asPrunedTrees =
+  case _ of
+    Nothing -> pure Nothing
+    Just els -> do
+      trees <- traverse asPrunedTree els
+      pure $ Just $ trees
+
+asPrunedTree :: LinkedInUIElement → Effect (Tree DetachedNode)
+asPrunedTree el =  do
+  tree <- asTree el
+  pure $ cutBranches filterEmpty tree