diff options
Diffstat (limited to 'lib/Daffm/Configuration.hs')
| -rw-r--r-- | lib/Daffm/Configuration.hs | 20 |
1 files changed, 3 insertions, 17 deletions
diff --git a/lib/Daffm/Configuration.hs b/lib/Daffm/Configuration.hs index 6128816..a27d616 100644 --- a/lib/Daffm/Configuration.hs +++ b/lib/Daffm/Configuration.hs @@ -3,13 +3,13 @@ module Daffm.Configuration where import Control.Arrow (ArrowChoice (left)) import Control.Exception (throwIO) import Daffm.Action.Commands (parseCommand) +import Daffm.Keymap (parseKeySequence) import Daffm.Types import Data.Bifunctor (Bifunctor (bimap)) import qualified Data.Map as Map import Data.Maybe (fromMaybe) import qualified Data.Text as Text import qualified Data.Text.IO as Text -import qualified Graphics.Vty as V import Toml ((.=)) import qualified Toml @@ -21,7 +21,7 @@ loadConfigFile = Text.readFile "./config.toml" >>= parse Right c -> pure c parseConfig :: Text.Text -> Either Text.Text Configuration -parseConfig txt = left Toml.prettyTomlDecodeErrors $ Toml.decode configurationCodec txt +parseConfig = left Toml.prettyTomlDecodeErrors . Toml.decode configurationCodec configurationCodec :: Toml.TomlCodec Configuration configurationCodec = @@ -32,19 +32,5 @@ configurationCodec = keymapCodec = Toml.dimap (const Map.empty) toKeymap . keymapRawCodec keymapRawCodec = Toml.tableMap Toml._KeyText Toml.text toKeymap = Map.fromList . map (bimap toKeys toCmd) . Map.toList - toKeys = fromMaybe [] . parseKey + toKeys = fromMaybe [] . parseKeySequence toCmd = fromMaybe CmdNoop . parseCommand - -parseKey :: Text.Text -> Maybe [Key] -parseKey keytxt = parse keytxt [] - where - -- TODO: Refactor using https://hackage-content.haskell.org/package/brick-2.9/docs/Brick-Keybindings-Parse.html#v:parseBinding - parse k keys = case k of - (Text.null -> True) -> pure keys - (Text.splitAt 1 -> (c, rest)) -> case (c, rest) of - ("<", Text.splitAt 4 -> (Text.toLower -> "tab>", rest')) -> parse rest' $ keys <> [V.KChar '\t'] - ("<", Text.splitAt 3 -> (Text.toLower -> "cr>", rest')) -> parse rest' $ keys <> [V.KEnter] - ("<", Text.splitAt 4 -> (Text.toLower -> "esc>", rest')) -> parse rest' $ keys <> [V.KEsc] - _ -> do - ch <- fst <$> Text.uncons c - parse rest $ keys <> [V.KChar ch] |
