module GHCi.DAP where import Data.Word import qualified Data.Text as T import qualified Text.Read as R import qualified Data.Text.Encoding as TE import qualified Data.ByteString as BS -- | -- Encode DAP Request Argument to [Word8] Show String. -- encode :: Show a => a -> String encode = show . BS.unpack . TE.encodeUtf8 . T.pack . show -- | -- Decode [Word8] Show String to DAP Request Argument. -- decode :: Read a => String -> Either String a decode argsStr = case R.readEither argsStr :: Either String [Word8] of Left err -> Left $ "read [Word8] failed. " ++ err ++ " : " ++ argsStr Right bs -> case R.readEither (toStr bs) of Left err -> Left $ "read failed. " ++ err ++ " : " ++ (toStr bs) Right a -> Right a where toStr = T.unpack . TE.decodeUtf8 . BS.pack