ribosome-0.1.0.0: lib/Ribosome/Api/Response.hs
module Ribosome.Api.Response(
nvimFatal,
nvimResponseString,
nvimResponseStringArray,
nvimValidateFatal,
)
where
import Data.ByteString.UTF8
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 String
nvimResponseString (ObjectString a) = return $ toString a
nvimResponseString a = liftIO . fail $ "invalid nvim type for String: " ++ show a
nvimResponseStringArray :: Object -> Neovim env [String]
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