{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
module NLP.Types.General
where

import Data.Serialize (Serialize)
import Data.Text (Text)
import qualified Data.Text as T
import GHC.Generics

import Test.QuickCheck (Arbitrary(..), elements)

-- | Just a handy alias for Text
type Error = Text

toEitherErr :: Either String a -> Either Error a
toEitherErr (Left s) = Left (T.pack s)
toEitherErr (Right r) = Right r

-- | Boolean type to indicate case sensitivity for textual
-- comparisons.
data CaseSensitive = Sensitive | Insensitive
  deriving (Read, Show, Generic)

instance Serialize CaseSensitive
instance Arbitrary CaseSensitive where
  arbitrary = elements [Sensitive, Insensitive]