proteome-0.3.13.0: lib/Proteome/Data/AddOptions.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE OverloadedStrings #-}
module Proteome.Data.AddOptions(
AddOptions(..),
) where
import GHC.Generics (Generic)
import Control.DeepSeq (NFData)
import qualified Data.Map as Map (fromList)
import Data.Text.Prettyprint.Doc ((<+>), viaShow)
import Neovim (NvimObject(..), Dictionary, Object(ObjectMap))
import Ribosome.Internal.NvimObject (extractObject, extractObjectOr)
import Proteome.Data.Project (ProjectName, ProjectType)
data AddOptions =
AddOptions {
name :: ProjectName,
tpe :: ProjectType,
activate :: Bool
}
deriving (Eq, Show, Generic, NFData)
instance NvimObject AddOptions where
toObject AddOptions {..} =
(toObject :: Dictionary -> Object) . Map.fromList $
[
("name", toObject name),
("tpe", toObject tpe),
("activate", toObject activate)
]
fromObject (ObjectMap o) = do
name' <- extractObject "name" o
tpe' <- extractObject "tpe" o
return $ AddOptions name' tpe' (extractObjectOr "activate" False o)
fromObject o = Left ("invalid type for AddOptions: " <+> viaShow o)