double-extra-0.1.1: Data/Double/Extra/Cassava.hs
module Data.Double.Extra.Cassava where
import Data.Double.Extra.Types
import Data.Double.Conversion.ByteString
import qualified Data.Csv as CSV
-- Writing
instance KnownNat n => CSV.ToField (DoubleFixed n) where
toField x = toFixed (fromIntegral (natVal x)) $ coerce x
instance KnownNat n => CSV.ToField (DoublePrecision n) where
toField x = toPrecision (fromIntegral (natVal x)) $ coerce x
instance KnownNat n => CSV.ToField (DoubleExponential n) where
toField x = toExponential (fromIntegral (natVal x)) $ coerce x
instance CSV.ToField DoubleShortest where
toField = coerce toShortest
-- Reading
instance KnownNat n => CSV.FromField (DoubleFixed n) where
parseField = coerce (CSV.parseField :: CSV.Field -> CSV.Parser Double)
instance KnownNat n => CSV.FromField (DoublePrecision n) where
parseField = coerce (CSV.parseField :: CSV.Field -> CSV.Parser Double)
instance KnownNat n => CSV.FromField (DoubleExponential n) where
parseField = coerce (CSV.parseField :: CSV.Field -> CSV.Parser Double)
instance CSV.FromField DoubleShortest where
parseField = coerce (CSV.parseField :: CSV.Field -> CSV.Parser Double)