pipes-key-value-csv-0.0.0.0: src/Pipes/KeyValueCsv/Internal/Names.hs
{-|
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