| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- module ExampleWebExt.Content where
- import Prelude
- import Browser.DOM (getBrowserDom)
- import Data.Either (Either(..))
- import Data.List.NonEmpty (NonEmptyList)
- import Data.List.NonEmpty as NEL
- import Data.Maybe (Maybe(..))
- import Data.Traversable (traverse)
- import Effect (Effect)
- import Effect.Class.Console (logShow)
- import Effect.Console (log)
- import LinkedIn.ArtDecoCard (queryArtDecoCard)
- import LinkedIn.ArtDecoTab (queryArtDecoTab)
- import LinkedIn.DetachedNode (toDetached)
- import LinkedIn.JobsUnifiedTopCard (queryJobsUnifiedTopCardElement)
- import LinkedIn (LinkedInUIElement(..), asPrunedTrees, asTree, getArtDecoCards, getArtDecoTabs, getJobsUnifiedTopCard)
- import LinkedIn.Profile.Project as PP
- import LinkedIn.Profile.Skill as PS
- import LinkedIn.Profile.WorkExperience as PWE
- import LinkedIn.QueryRunner (runQuery)
- import Yoga.Tree (Tree, showTree)
- main :: Effect Unit
- main = do
- dom <- getBrowserDom
- artDecoCards <- getArtDecoCards dom
- artDecoTabs <- getArtDecoTabs dom
- jobsUnifiedTopCard <- getJobsUnifiedTopCard dom
- log "[content] starting up"
- maybeShowTree artDecoCards >>= log
- maybeShowPruned "no card found" artDecoCards >>= log
- maybeShowPruned "no tabs found" artDecoTabs >>= log
- maybeShowPruned "no top card found" jobsUnifiedTopCard >>= log
- case artDecoCards of
- Nothing -> log "nothing"
- Just l -> do
- queried <- (\(LinkedInUIElement _ n) -> runQuery $ queryArtDecoCard n) $ NEL.head l
- case queried of
- Left l' -> logShow l'
- Right p -> do
- detached <- traverse toDetached p
- logShow detached
- logShow $ PWE.fromUI detached
- logShow $ PP.fromUI detached
- case artDecoTabs of
- Nothing -> log "nothing"
- Just l -> do
- queried <- (\(LinkedInUIElement _ n) -> runQuery $ queryArtDecoTab n) $ NEL.head l
- case queried of
- Left l' -> logShow l'
- Right p -> do
- detached <- traverse toDetached p
- logShow detached
- logShow $ PS.fromUI detached
- case jobsUnifiedTopCard of
- Nothing -> log "nothing"
- Just l -> do
- queried <- (\(LinkedInUIElement _ n) -> runQuery $ queryJobsUnifiedTopCardElement n) $ NEL.head l
- case queried of
- Left l' -> logShow l'
- Right p -> do
- detached <- traverse toDetached p
- log "parsed OK"
- logShow detached
- maybeShowTree ∷ Maybe (NonEmptyList LinkedInUIElement) → Effect String
- maybeShowTree Nothing = pure "nope"
- maybeShowTree (Just nel) = do
- tree <- asTree $ NEL.head nel
- pure $ showTree tree
- maybeShowPruned ∷ String → Maybe (NonEmptyList LinkedInUIElement) → Effect String
- maybeShowPruned errorMsg els = do
- trees <- asPrunedTrees els
- case trees of
- Nothing -> pure errorMsg
- Just ts -> do
- pure $ showTree $ NEL.head ts
- --pure $ showMaybeTree $ zipperTest $ head ts
- showMaybeTree ∷ ∀ (a ∷ Type). Show a ⇒ Maybe (Tree a) → String
- showMaybeTree Nothing = "No tree"
- showMaybeTree (Just t) = showTree t
|