git.iko.soy/typeable/http-api-data
on master help sign in
Add instances for Void
commitf5bc1083fb0388fcd0b84aaebf9cd9e38aebe3c3 authorNickolay Kudasov <nickolay.kudasov@gmail.com> dateTue 6 Oct 2015, 00:45 (11 years ago) parente79860f
2 files changed+24
Web/HttpApiData.hs+15 Web/PathPieces.hs+9
Web/HttpApiData.hs+15
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
12{-# LANGUAGE DefaultSignatures #-}
23{-# LANGUAGE FlexibleInstances #-}
34{-# LANGUAGE OverloadedStrings #-}
@@ -38,6 +39,10 @@ import qualified Data.Text.Lazy as L
3839import Data.Time (Day)
3940import Data.Version
4041
42+#if MIN_VERSION_base(4,8,0)
43+import Data.Void
44+#endif
45+
4146import Text.Read (readMaybe)
4247import Text.ParserCombinators.ReadP (readP_to_S)
4348
@@ -134,6 +139,11 @@ instance ToHttpApiData Char where toUrlPiece = T.singleton
134139instance ToHttpApiData Version where
135140 toUrlPiece = T.pack . showVersion
136141
142+#if MIN_VERSION_base(4,8,0)
143+instance ToHttpApiData Void where
144+ toUrlPiece = absurd
145+#endif
146+
137147instance ToHttpApiData Bool where toUrlPiece = showUrlPiece
138148instance ToHttpApiData Double where toUrlPiece = showUrlPiece
139149instance ToHttpApiData Float where toUrlPiece = showUrlPiece
@@ -201,6 +211,11 @@ instance FromHttpApiData Text where parseUrlPiece = Right
201211instance FromHttpApiData L.Text where parseUrlPiece = Right . L.fromStrict
202212instance FromHttpApiData Day where parseUrlPiece = readEitherUrlPiece
203213
214+#if MIN_VERSION_base(4,8,0)
215+instance FromHttpApiData Void where
216+ parseUrlPiece _ = Left "Void cannot be parsed!"
217+#endif
218+
204219-- |
205220-- >>> parseUrlPiece "Just 123" :: Either Text (Maybe Int)
206221-- Right (Just 123)
Web/PathPieces.hs+9
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
12{-# LANGUAGE DefaultSignatures #-}
23{-# LANGUAGE FlexibleInstances #-}
34{-# LANGUAGE OverloadedStrings #-}
@@ -20,6 +21,10 @@ import Data.Version (Version)
2021import Data.Time (Day)
2122import Text.Read (readMaybe)
2223
24+#if MIN_VERSION_base(4,8,0)
25+import Data.Void (Void)
26+#endif
27+
2328import Web.HttpApiData
2429
2530-- | Convert Haskell values to and from route piece.
@@ -55,6 +60,10 @@ instance PathPiece L.Text
5560instance PathPiece Day
5661instance PathPiece Version
5762
63+#if MIN_VERSION_base(4,8,0)
64+instance PathPiece Void
65+#endif
66+
5867-- | Wrapped @'PathPiece'@ value.
5968newtype WrappedPathPiece a = WrappedPathPiece { unwrapPathPiece :: a }
6069