dhall-fly-0.1.0: src/Fly/Internal/DhallWithPrefix.hs
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE UndecidableInstances #-}
module Fly.Internal.DhallWithPrefix where
import Control.Monad.Trans.State.Strict
import Data.Aeson
import Data.Aeson.Casing
import Data.Text
import Dhall
import GHC.Generics
newtype FromDhallWithPrefix a = FromDhallWithPrefix a
instance (Generic a, GenericFromDhall (Rep a)) => FromDhall (FromDhallWithPrefix a) where
autoWith opts =
let modifier = pack . fieldLabelModifier (aesonPrefix snakeCase) . unpack
in FromDhallWithPrefix <$> fmap GHC.Generics.to (evalState (genericAutoWith opts{fieldModifier = modifier}) 1)