ArtDecoTab.purs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. module LinkedIn.ArtDecoTab where
  2. import Prelude
  3. import Data.Either (Either)
  4. import Data.Generic.Rep (class Generic)
  5. import Data.List (List)
  6. import Data.List.Types (NonEmptyList)
  7. import Data.Maybe (Maybe)
  8. import Data.Show.Generic (genericShow)
  9. import LinkedIn.Types (Parser)
  10. import LinkedIn.Utils (queryOneAndParse)
  11. import LinkedIn.UIElements.Types (UIElement)
  12. import LinkedIn.ArtDeco (ArtDecoPvsEntity, parseArtDecoPvsEntity)
  13. import LinkedIn.ArtDeco as AD
  14. import Parsing (ParseError)
  15. data ArtDecoTabElement = ArtDecoTabElement {
  16. pvs_entity :: ArtDecoPvsEntity
  17. }
  18. derive instance Generic ArtDecoTabElement _
  19. derive instance Eq ArtDecoTabElement
  20. instance Show ArtDecoTabElement where
  21. show = genericShow
  22. parseArtDecoTab :: Parser ArtDecoTabElement
  23. parseArtDecoTab n = do
  24. pvs <- queryOneAndParse ":scope div.pvs-entity--padded" parseArtDecoPvsEntity n
  25. pure $ ado
  26. p <- pvs
  27. in ArtDecoTabElement {pvs_entity: p}
  28. toCenterContent ∷ ArtDecoTabElement → List (Either ParseError UIElement)
  29. toCenterContent = toPvsEntity >>> AD.toCenterContent
  30. toHeaderBold ∷ ArtDecoTabElement → Either ParseError UIElement
  31. toHeaderBold = toPvsEntity >>> AD.toHeaderBold
  32. toHeaderLight ∷ ArtDecoTabElement → Maybe (NonEmptyList (Either ParseError UIElement))
  33. toHeaderLight = toPvsEntity >>> AD.toHeaderLight
  34. toHeaderNormal ∷ ArtDecoTabElement → Maybe (Either ParseError UIElement)
  35. toHeaderNormal = toPvsEntity >>> AD.toHeaderNormal
  36. toPvsEntity ∷ ArtDecoTabElement → ArtDecoPvsEntity
  37. toPvsEntity (ArtDecoTabElement { pvs_entity }) = pvs_entity