{-# Language BangPatterns #-}
module Client.View.UrlSelection
( urlSelectionView
) where
import Client.State
import Client.State.Window
import Client.State.Focus
import Client.Image.Message
import Control.Lens
import Graphics.Vty.Image
import Text.Regex.TDFA
import Data.Text (Text)
urlSelectionView :: Focus -> ClientState -> [Image]
urlSelectionView focus st =
zipWith draw [1..]
$ toListOf (clientWindows . ix focus . winMessages . folded . wlText . folding textUrls) st
textUrls :: Text -> [Text]
textUrls = getAllTextMatches . match urlPattern
draw :: Int -> Text -> Image
draw i url = string defAttr (shows i ". ")
<|> text' defAttr (cleanText url)