{-| Module : Pipes.KeyValueCsv.Internal.Names Copyright : (c) Marcin Mrotek, 2015 License : BSD3 Maintainer : marcin.jan.mrotek@gmail.com Stability : experimental Default key name generation by printing the field label type names. -} {-# LANGUAGE DataKinds , GADTs , PolyKinds #-} module Pipes.KeyValueCsv.Internal.Names where import Data.Vinyl import Data.Vinyl.Functor import Data.Vinyl.Utils.Field import Data.Text (Text) import qualified Data.Text as Text import Data.Typeable names :: Rec (DictProxy Typeable) rs -> Rec (Const Text) rs -- ^Construct a record of 'Text' from a record of 'Proxy'ies enriched with 'Typeable' constraints. names RNil = RNil names (p@DictProxy :& ps) = (Const . Text.pack . show . typeRep $ getProxy p) :& names ps