module Data.Csv.IxSet.Typed (decodeByName, encodeByName) where import Data.ByteString.Lazy import qualified Data.Csv import Data.IxSet.Typed as Ix import Data.Vector as V -- Like `Data.Csv.decodeByName` but for `IxSet`. -- -- @since 0.0.2.0 decodeByName :: (Ix.Indexable ixs xs, Data.Csv.FromNamedRecord xs) => ByteString -> Either String (Data.Csv.Header, Ix.IxSet ixs xs) decodeByName = fmap (fmap (Ix.fromList . V.toList)) . Data.Csv.decodeByName -- Like `Data.Csv.encodeByName` but for `IxSet`. -- -- @since 0.0.2.0 encodeByName :: (Ix.Indexable ixs xs, Data.Csv.ToNamedRecord xs) => Data.Csv.Header -> Ix.IxSet ixs xs -> ByteString encodeByName h = Data.Csv.encodeByName h . Ix.toList