git.iko.soy/typeable/http-api-data
on master help sign in
Merge pull request #87 from rockbmb/instance-for-fixed-types
af01cffNickolay Kudasov
src/Web/Internal/HttpApiData.hs+5
@@ -26,6 +26,7 @@ import Data.ByteString (ByteString)
26import qualified Data.ByteString as BS
26import qualified Data.ByteString as BS
27import Data.Monoid
27import Data.Monoid
28
28
29+import qualified Data.Fixed as F
29import Data.Int
30import Data.Int
30import Data.Word
31import Data.Word
31
32
@@ -37,7 +38,9 @@ import Data.Text.Read (Reader, decimal, rational,
37 signed)
38 signed)
38
39
39import Data.Time
40import Data.Time
41+#if __GLASGOW_HASKELL__ < 710
40import Data.Time.Locale.Compat
42import Data.Time.Locale.Compat
43+#endif
41import Data.Version
44import Data.Version
42
45
43#if MIN_VERSION_base(4,8,0)
46#if MIN_VERSION_base(4,8,0)
@@ -449,6 +452,8 @@ instance ToHttpApiData Word16 where toUrlPiece = showt; toEncodedUrlPiece = un
449instance ToHttpApiData Word32 where toUrlPiece = showt; toEncodedUrlPiece = unsafeToEncodedUrlPiece
452instance ToHttpApiData Word32 where toUrlPiece = showt; toEncodedUrlPiece = unsafeToEncodedUrlPiece
450instance ToHttpApiData Word64 where toUrlPiece = showt; toEncodedUrlPiece = unsafeToEncodedUrlPiece
453instance ToHttpApiData Word64 where toUrlPiece = showt; toEncodedUrlPiece = unsafeToEncodedUrlPiece
451
454
455+instance F.HasResolution a => ToHttpApiData (F.Fixed a) where toUrlPiece = showt; toEncodedUrlPiece = unsafeToEncodedUrlPiece
456+
452-- |
457-- |
453-- >>> toUrlPiece (fromGregorian 2015 10 03)
458-- >>> toUrlPiece (fromGregorian 2015 10 03)
454-- "2015-10-03"
459-- "2015-10-03"
test/Web/Internal/HttpApiDataSpec.hs+9
@@ -3,6 +3,7 @@
3module Web.Internal.HttpApiDataSpec (spec) where
3module Web.Internal.HttpApiDataSpec (spec) where
4
4
5import Control.Applicative
5import Control.Applicative
6+import qualified Data.Fixed as F
6import Data.Int
7import Data.Int
7import Data.Word
8import Data.Word
8import Data.Time
9import Data.Time
@@ -136,6 +137,14 @@ spec = do
136 checkEncodedUrlPiece (Proxy :: Proxy Natural) "Natural"
137 checkEncodedUrlPiece (Proxy :: Proxy Natural) "Natural"
137#endif
138#endif
138
139
140+ checkEncodedUrlPiece (Proxy :: Proxy F.Uni) "Uni"
141+ checkEncodedUrlPiece (Proxy :: Proxy F.Deci) "Deci"
142+ checkEncodedUrlPiece (Proxy :: Proxy F.Centi) "Centi"
143+ checkEncodedUrlPiece (Proxy :: Proxy F.Milli) "Milli"
144+ checkEncodedUrlPiece (Proxy :: Proxy F.Micro) "Micro"
145+ checkEncodedUrlPiece (Proxy :: Proxy F.Nano) "Nano"
146+ checkEncodedUrlPiece (Proxy :: Proxy F.Pico) "Pico"
147+
139 it "bad integers are rejected" $ do
148 it "bad integers are rejected" $ do
140 parseUrlPieceMaybe (T.pack "123hello") `shouldBe` (Nothing :: Maybe Int)
149 parseUrlPieceMaybe (T.pack "123hello") `shouldBe` (Nothing :: Maybe Int)
141
150