ribosome-0.3.0.0: lib/Ribosome/Api/Response.hs
module Ribosome.Api.Response(
nvimFatal,
nvimResponseString,
nvimResponseStringArray,
nvimValidateFatal,
)
where
import Neovim
nvimFatal :: Either NeovimException a -> Neovim env a
nvimFatal (Right a) = return a
nvimFatal (Left e) = (liftIO . fail . show) e
nvimResponseString :: Object -> Neovim env Text
nvimResponseString (ObjectString a) = return $ decodeUtf8 a
nvimResponseString a = liftIO . fail $ "invalid nvim type for Text: " <> show a
nvimResponseStringArray :: Object -> Neovim env [Text]
nvimResponseStringArray (ObjectArray a) = traverse nvimResponseString a
nvimResponseStringArray a = liftIO . fail $ "invalid nvim type for Array: " <> show a
nvimValidateFatal :: (Object -> Neovim env a) -> Either NeovimException Object -> Neovim env a
nvimValidateFatal validate response = do
result <- nvimFatal response
validate result