{-# LANGUAGE DeriveGeneric #-}
module NLP.Concraft.Polish.DAG.Config.Disamb
( DisambCfg (..)
, TierCfg (..)
, Set(..)
) where
import qualified Data.Set as S
import qualified Data.Vector as V
import qualified Data.Text as T
import Dhall
import qualified Data.Aeson as JSON
data DisambCfg = DisambCfg
{ tiersCfg :: [TierCfg]
} deriving (Generic, Show, Eq, Ord)
data TierCfg = TierCfg
{ withPos :: Bool
, withEos :: Bool
, withAtts :: Set T.Text
} deriving (Generic, Show, Eq, Ord)
instance Interpret DisambCfg
instance JSON.FromJSON DisambCfg
instance JSON.ToJSON DisambCfg where
toEncoding = JSON.genericToEncoding JSON.defaultOptions
instance Interpret TierCfg
instance JSON.FromJSON TierCfg
instance JSON.ToJSON TierCfg where
toEncoding = JSON.genericToEncoding JSON.defaultOptions
newtype Set a = Set {unSet :: S.Set a}
deriving (Generic, Show, Eq, Ord)
instance (Ord a, Interpret a) => Interpret (Set a) where
autoWith = fmap
(fmap $ Set . S.fromList . V.toList)
autoWith
instance (Ord a, JSON.FromJSON a) => JSON.FromJSON (Set a)
instance JSON.ToJSON a => JSON.ToJSON (Set a) where
toEncoding = JSON.genericToEncoding JSON.defaultOptions