@@ -6,12 +6,12 @@ module Servant.Common.Text
6 , ToText(..)
6 , ToText(..)
9+import Control.Applicative ((<$>))
9import Data.Int (Int16, Int32, Int64, Int8)
10import Data.Int (Int16, Int32, Int64, Int8)
10import Data.String.Conversions (cs)
11import Data.String.Conversions (cs)
11import Data.Text (Text)
12import Data.Text (Text)
12import Data.Text.Read (Reader, decimal, rational, signed)
13import Data.Text.Read (Reader, decimal, rational, signed)
13import Data.Word (Word, Word16, Word32, Word64, Word8)
14import Data.Word (Word, Word16, Word32, Word64, Word8)
14−import GHC.Float (double2Float)
16-- | For getting values from url captures and query string parameters
16-- | For getting values from url captures and query string parameters
17-- Instances should obey:
17-- Instances should obey:
@@ -125,7 +125,7 @@ instance ToText Integer where
125 toText = cs . show
125 toText = cs . show
127instance FromText Double where
127instance FromText Double where
128− fromText = runReader rational
128+ fromText x = fromRational <$> runReader rational x
130instance ToText Double where
130instance ToText Double where
131 toText = cs . show
131 toText = cs . show
@@ -133,7 +133,7 @@ instance ToText Double where
133instance FromText Float where
133instance FromText Float where
134 -- Double is more practically accurate due to weird rounding when using
134 -- Double is more practically accurate due to weird rounding when using
135 -- rational. We convert to double and then convert to Float.
135 -- rational. We convert to double and then convert to Float.
136− fromText = fmap double2Float . runReader rational
136+ fromText x = fromRational <$> runReader rational x
138instance ToText Float where
138instance ToText Float where
139 toText = cs . show
139 toText = cs . show