miv-0.4.7: src/Cmdline.hs
{-# LANGUAGE BlockArguments, LambdaCase, OverloadedStrings #-}
module Cmdline where
import Data.Text (Text, unpack)
import Data.YAML
import Prelude hiding (show)
import ShowText
data Cmdline = CmdlineExCommand
| CmdlineForwardSearch
| CmdlineBackwardSearch
| CmdlineInput
deriving (Eq, Ord)
instance ShowText Cmdline where
show CmdlineExCommand = ":"
show CmdlineForwardSearch = "/"
show CmdlineBackwardSearch = "?"
show CmdlineInput = "@"
instance FromYAML Cmdline where
parseYAML = withStr "!!str" \case
":" -> return CmdlineExCommand
"/" -> return CmdlineForwardSearch
"?" -> return CmdlineBackwardSearch
"@" -> return CmdlineInput
x -> fail $ unpack $ "failed to parse cmdline: " <> x
cmdlinePattern :: Cmdline -> Text
cmdlinePattern CmdlineExCommand = ":"
cmdlinePattern CmdlineForwardSearch = "/"
cmdlinePattern CmdlineBackwardSearch = "\\?"
cmdlinePattern CmdlineInput = "@"