git.iko.soy/typeable/http-api-data
on master help sign in
Merge pull request #87 from rockbmb/instance-for-fixed-types

`ToHttpApiData` Instance for fixed types

commitaf01cffba1e4f03e8b1189ea5d69cdbbf4ff5e33 authorNickolay Kudasov <fizruk@users.noreply.github.com> dateFri 5 Oct 2018, 13:27 (8 years ago) parentf29b0f1cd01f5f
2 files changed+14
src/Web/Internal/HttpApiData.hs+5 test/Web/Internal/HttpApiDataSpec.hs+9
src/Web/Internal/HttpApiData.hs+5
@@ -26,6 +26,7 @@ import Data.ByteString (ByteString)
2626import qualified Data.ByteString as BS
2727import Data.Monoid
2828
29+import qualified Data.Fixed as F
2930import Data.Int
3031import Data.Word
3132
@@ -37,7 +38,9 @@ import Data.Text.Read (Reader, decimal, rational,
3738 signed)
3839
3940import Data.Time
41+#if __GLASGOW_HASKELL__ < 710
4042import Data.Time.Locale.Compat
43+#endif
4144import Data.Version
4245
4346#if MIN_VERSION_base(4,8,0)
@@ -449,6 +452,8 @@ instance ToHttpApiData Word16 where toUrlPiece = showt; toEncodedUrlPiece = un
449452instance ToHttpApiData Word32 where toUrlPiece = showt; toEncodedUrlPiece = unsafeToEncodedUrlPiece
450453instance ToHttpApiData Word64 where toUrlPiece = showt; toEncodedUrlPiece = unsafeToEncodedUrlPiece
451454
455+instance F.HasResolution a => ToHttpApiData (F.Fixed a) where toUrlPiece = showt; toEncodedUrlPiece = unsafeToEncodedUrlPiece
456+
452457-- |
453458-- >>> toUrlPiece (fromGregorian 2015 10 03)
454459-- "2015-10-03"
test/Web/Internal/HttpApiDataSpec.hs+9
@@ -3,6 +3,7 @@
33module Web.Internal.HttpApiDataSpec (spec) where
44
55import Control.Applicative
6+import qualified Data.Fixed as F
67import Data.Int
78import Data.Word
89import Data.Time
@@ -136,6 +137,14 @@ spec = do
136137 checkEncodedUrlPiece (Proxy :: Proxy Natural) "Natural"
137138#endif
138139
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+
139148 it "bad integers are rejected" $ do
140149 parseUrlPieceMaybe (T.pack "123hello") `shouldBe` (Nothing :: Maybe Int)
141150