Quellcode durchsuchen

Add asPrunedTree(s) functions

jherve vor 2 Jahren
Ursprung
Commit
383f663a1f
2 geänderte Dateien mit 22 neuen und 7 gelöschten Zeilen
  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 Browser.DOM (getBrowserDom)
 import Data.Maybe (Maybe(..))
 import Data.Maybe (Maybe(..))
 import Effect (Effect)
 import Effect (Effect)
-import Effect.Class.Console (logShow)
 import Effect.Console (log)
 import Effect.Console (log)
 import Yoga.Tree (showTree)
 import Yoga.Tree (showTree)
 
 
@@ -30,9 +29,9 @@ main = do
   log sTopCards
   log sTopCards
 
 
 maybeShow ∷ String → Maybe (NonEmptyList LinkedInUIElement) → Effect String
 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
     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 Control.Comonad.Cofree (head, tail)
 import Data.Array as A
 import Data.Array as A
 import Data.List (List(..), (:))
 import Data.List (List(..), (:))
+import Data.List as L
 import Data.List.NonEmpty as NEL
 import Data.List.NonEmpty as NEL
 import Data.List.Types (NonEmptyList)
 import Data.List.Types (NonEmptyList)
 import Data.Maybe (Maybe(..), fromJust)
 import Data.Maybe (Maybe(..), fromJust)
 import Data.String (Pattern(..), joinWith)
 import Data.String (Pattern(..), joinWith)
 import Data.String as S
 import Data.String as S
 import Data.String.CodeUnits (fromCharArray, toCharArray)
 import Data.String.CodeUnits (fromCharArray, toCharArray)
-import Data.Traversable (sequence)
+import Data.Traversable (sequence, traverse)
 import Data.Tuple (Tuple(..))
 import Data.Tuple (Tuple(..))
 import Effect (Effect)
 import Effect (Effect)
 import Partial.Unsafe (unsafePartial)
 import Partial.Unsafe (unsafePartial)
 import Web.DOM (Document, Element, Node)
 import Web.DOM (Document, Element, Node)
+import Web.DOM.Document (origin)
 import Web.DOM.Document as D
 import Web.DOM.Document as D
 import Web.DOM.Element as E
 import Web.DOM.Element as E
 import Web.DOM.Node (nodeName, nodeType, textContent)
 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.NodeList as NL
 import Web.DOM.NodeType (NodeType(..))
 import Web.DOM.NodeType (NodeType(..))
 import Web.DOM.ParentNode (QuerySelector(..), querySelector, querySelectorAll)
 import Web.DOM.ParentNode (QuerySelector(..), querySelector, querySelectorAll)
+import Yoga.Tree.Zipper as Z
 
 
 -- A light abstraction layer above the DOM manipulation API
 -- 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 {tag, content: ""} | tag /= "BR" -> false
   DetachedElement {classes} -> L.all (_ /= "visually-hidden") classes
   DetachedElement {classes} -> L.all (_ /= "visually-hidden") classes
   _ -> true
   _ -> 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