Pārlūkot izejas kodu

Use UIElement in WEP parsing

jherve 1 gadu atpakaļ
vecāks
revīzija
3b7ad87d4e
1 mainītis faili ar 22 papildinājumiem un 12 dzēšanām
  1. 22 12
      src/LinkedIn/Profile/WorkExperience.purs

+ 22 - 12
src/LinkedIn/Profile/WorkExperience.purs

@@ -6,12 +6,12 @@ import Prelude
 import Data.Either (Either(..), note)
 import Data.Generic.Rep (class Generic)
 import Data.List.NonEmpty as NEL
-import Data.Maybe (Maybe(..), fromMaybe)
+import Data.Maybe (Maybe(..))
 import Data.Show.Generic (genericShow)
-import Debug (trace, traceM)
 import LinkedIn (DetachedNode(..))
 import LinkedIn.ArtDecoCard (ArtDecoCardElement(..), ArtDecoCenter(..), ArtDecoCenterContent(..), ArtDecoCenterHeader(..), ArtDecoPvsEntity(..), ArtDecoPvsEntitySubComponent(..))
-import Parsing (runParser)
+import LinkedIn.UIElements.Types (UIElement(..))
+import Parsing (ParseError, runParser)
 
 data WorkExperience = WorkExperience {
   position :: String,
@@ -24,7 +24,7 @@ derive instance Generic WorkExperience _
 instance Show WorkExperience where
   show = genericShow
 
-fromUI :: ArtDecoCardElement -> Either String WorkExperience
+fromUI ∷ ArtDecoCardElement → Either String WorkExperience
 fromUI (ArtDecoCardElement {
   pvs_entity: ArtDecoPvsEntity {
     center: ArtDecoCenter {
@@ -41,12 +41,22 @@ fromUI (ArtDecoCardElement {
   desc = NEL.head subC
 
   wep = ado
-    p <- toContent bold
-    c <- toContent <$> normal
-  in WorkExperience {position: p, company: c, timeSpan: Nothing, description: toContent desc}
-
-toContent ∷ DetachedNode → Maybe String
-toContent (DetachedElement {content}) = Just content
-toContent _ = Nothing
+    p <- toText bold
+  in WorkExperience {
+    position: p,
+    company: normal >>= toText,
+    timeSpan: Nothing,
+    description: toText desc
+  }
 
-toUIElement el = runParser uiElementP el
+toUIElement ∷ DetachedNode → Either ParseError UIElement
+toUIElement (DetachedElement {content}) = runParser content uiElementP
+toUIElement (DetachedComment str) = runParser str uiElementP
+toUIElement (DetachedText str) = runParser str uiElementP
+
+toText ∷ DetachedNode → Maybe String
+toText el = case toUIElement el of
+  Right (UIPlainText str) -> Just str
+  Right (UIDotSeparated (UIPlainText str) _) -> Just str
+  Right (UIDotSeparated _ (UIPlainText str)) -> Just str
+  _ -> Nothing