escoger-0.1.0.0: Exec/Main.hs
{-# LANGUAGE OverloadedStrings #-}
import Control.Monad.Reader
import Control.Monad.State.Strict
import qualified Data.ByteString.Char8 as BC
import qualified Data.Vector as V
import Escoger.Interactive
import Escoger.Internal
import Graphics.Vty
import System.Posix.IO
main :: IO ()
main = do
content <- BC.getContents
let content' = (V.filter (not . BC.null) . V.fromList . BC.split '\n') content
ifd <- openFd "/dev/tty" ReadOnly Nothing defaultFileFlags
ofd <- openFd "/dev/tty" WriteOnly Nothing defaultFileFlags
vty <- mkVty defaultConfig { inputFd = Just ifd, outputFd = Just ofd }
selection <- flip evalStateT (SearchState content' "" 1) $
flip runReaderT (SearchData content' vty) $
interactiveLoop
BC.putStrLn selection