packages feed

templates-0.1.0.0: src/Templates/Partials/Image.hs

module Templates.Partials.Image where

import Templates.Types
import Reflex.Dom.Core
import System.FilePath (takeBaseName)
import qualified Data.Map as Map
import qualified Data.Text as T

mkBasicName :: T.Text -> T.Text 
mkBasicName = T.replace (T.pack "-") (T.pack " ") . T.pack . takeBaseName . T.unpack 
  
img :: DomBuilder t m => ImgSrc -> m ()
img src = elAttr (T.pack "img") ((T.pack "src") =: src <> (T.pack "alt") =: mkBasicName src) blank

imgAttr :: DomBuilder t m => ImgSrc -> Map.Map T.Text T.Text -> m ()
imgAttr src atrs = elAttr (T.pack "img") ((T.pack "src") =: src <> atrs <> maybeAlt) blank
  where
    maybeAlt = case Map.lookup (T.pack "alt") atrs of
      Just _ -> mempty
      Nothing -> (T.pack "alt") =: mkBasicName src

imgClass :: DomBuilder t m => ImgSrc -> T.Text -> m ()
imgClass src class' = elAttr (T.pack "img") ((T.pack "src") =: src <> (T.pack "class") =: class' <> (T.pack "alt") =: mkBasicName src) blank