packages feed

ribosome-0.3.0.0: lib/Ribosome/Msgpack/Error.hs

{-# LANGUAGE TemplateHaskell #-}

module Ribosome.Msgpack.Error where

import Data.DeepPrisms (deepPrisms)
import System.Log.Logger (Priority(ERROR))

import Data.Text.Prettyprint.Doc (defaultLayoutOptions, layoutPretty)
import Data.Text.Prettyprint.Doc.Render.Text (renderStrict)
import Ribosome.Data.ErrorReport (ErrorReport(ErrorReport))
import Ribosome.Error.Report.Class (ReportError(..))
import Ribosome.Msgpack.Util (Err)

newtype DecodeError =
  Failed Err
  deriving Show

deepPrisms ''DecodeError

instance ReportError DecodeError where
  errorReport (Failed err) =
    ErrorReport "error decoding response from neovim" ["DecodeError:", rendered] ERROR
    where
      rendered = renderStrict $ layoutPretty defaultLayoutOptions err