ArtDecoCard.purs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. module LinkedIn.ArtDecoCard where
  2. import Prelude
  3. import Data.Foldable (class Foldable, foldMap, foldlDefault, foldrDefault)
  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 Data.Traversable (class Traversable, sequence, traverseDefault)
  10. import LinkedIn.ArtDeco (ArtDecoPvsEntity, queryArtDecoPvsEntity)
  11. import LinkedIn.ArtDeco as AD
  12. import LinkedIn.QueryRunner (QueryRunner)
  13. import Web.DOM (Node)
  14. data ArtDecoCardElement a = ArtDecoCardElement {
  15. pvs_entity :: ArtDecoPvsEntity a
  16. }
  17. derive instance Generic (ArtDecoCardElement a) _
  18. derive instance Eq a => Eq (ArtDecoCardElement a)
  19. instance Show a => Show (ArtDecoCardElement a) where
  20. show = genericShow
  21. derive instance Functor ArtDecoCardElement
  22. instance Foldable ArtDecoCardElement where
  23. foldMap f (ArtDecoCardElement {pvs_entity}) = foldMap f pvs_entity
  24. foldl = \x -> foldlDefault x
  25. foldr = \x -> foldrDefault x
  26. instance Traversable ArtDecoCardElement where
  27. sequence (ArtDecoCardElement {pvs_entity}) = ado
  28. p <- sequence pvs_entity
  29. in ArtDecoCardElement {pvs_entity: p}
  30. traverse = \x -> traverseDefault x
  31. queryArtDecoCard :: QueryRunner (ArtDecoCardElement Node)
  32. queryArtDecoCard n = do
  33. pvs <- queryArtDecoPvsEntity ":scope div.pvs-entity--padded" n
  34. pure $ ArtDecoCardElement {pvs_entity: pvs}
  35. toCenterContent ∷ forall a. ArtDecoCardElement a → List a
  36. toCenterContent = toPvsEntity >>> AD.toCenterContent
  37. toHeaderBold ∷ forall a. ArtDecoCardElement a → a
  38. toHeaderBold = toPvsEntity >>> AD.toHeaderBold
  39. toHeaderLight ∷ forall a. ArtDecoCardElement a → Maybe (NonEmptyList a)
  40. toHeaderLight = toPvsEntity >>> AD.toHeaderLight
  41. toHeaderNormal ∷ forall a. ArtDecoCardElement a → Maybe a
  42. toHeaderNormal = toPvsEntity >>> AD.toHeaderNormal
  43. toPvsEntity ∷ forall a. ArtDecoCardElement a → ArtDecoPvsEntity a
  44. toPvsEntity (ArtDecoCardElement { pvs_entity }) = pvs_entity