glirc-2.17: src/Client/View/UrlSelection.hs
{-# Language BangPatterns #-}
{-|
Module : Client.View.UrlSelection
Description : URL selection module
Copyright : (c) Eric Mertens, 2016
License : ISC
Maintainer : emertens@gmail.com
This module provides a list of the URLs found in the current message
window in order to assist in selecting one to open with @/url@
-}
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)