{-# LANGUAGE DataKinds #-}
{-# LANGUAGE PolyKinds #-}
module Deriving.Aeson.Stock
( Prefixed
, PrefixedSnake
, Suffixed
, SuffixedSnake
, Snake
, Vanilla
, CustomJSON(..)
, FromJSON
, ToJSON
, Generic) where
import Data.Kind (Type)
import Deriving.Aeson
type Prefixed str = CustomJSON '[FieldLabelModifier (StripPrefix str)]
type PrefixedSnake str = CustomJSON '[FieldLabelModifier '[StripPrefix str, CamelToSnake]]
type Suffixed str = CustomJSON '[FieldLabelModifier (StripSuffix str)]
type SuffixedSnake str = CustomJSON '[FieldLabelModifier '[StripSuffix str, CamelToSnake]]
type Snake = CustomJSON '[FieldLabelModifier CamelToSnake]
type Vanilla = CustomJSON ('[] :: [Type])