@@ -1,5 +1,6 @@
1{-# LANGUAGE CPP #-}
1{-# LANGUAGE CPP #-}
2{-# LANGUAGE DeriveDataTypeable #-}
2{-# LANGUAGE DeriveDataTypeable #-}
3+{-# LANGUAGE DeriveFunctor #-}
3{-# LANGUAGE DeriveGeneric #-}
4{-# LANGUAGE DeriveGeneric #-}
4{-# LANGUAGE DeriveTraversable #-}
5{-# LANGUAGE DeriveTraversable #-}
5{-# LANGUAGE FlexibleContexts #-}
6{-# LANGUAGE FlexibleContexts #-}
@@ -28,7 +29,7 @@ import Data.Map (Map)
28import qualified Data.Map as Map
29import qualified Data.Map as Map
29import Data.Monoid
30import Data.Monoid
30import Data.Scientific (Scientific)
31import Data.Scientific (Scientific)
31−import Data.String (fromString)
32+import Data.String (IsString(..))
32import Data.Text (Text)
33import Data.Text (Text)
33import qualified Data.Text as Text
34import qualified Data.Text as Text
34import GHC.Generics (Generic)
35import GHC.Generics (Generic)
@@ -150,12 +151,18 @@ data License = License
150 , _licenseUrl :: Maybe URL
151 , _licenseUrl :: Maybe URL
151 } deriving (Eq, Show, Generic, Data, Typeable)
152 } deriving (Eq, Show, Generic, Data, Typeable)
154+instance IsString License where
155+ fromString s = License (fromString s) Nothing
153-- | The host (name or ip) serving the API. It MAY include a port.
157-- | The host (name or ip) serving the API. It MAY include a port.
154data Host = Host
158data Host = Host
155 { _hostName :: HostName -- ^ Host name.
159 { _hostName :: HostName -- ^ Host name.
156 , _hostPort :: Maybe PortNumber -- ^ Optional port.
160 , _hostPort :: Maybe PortNumber -- ^ Optional port.
157 } deriving (Eq, Show, Generic, Typeable)
161 } deriving (Eq, Show, Generic, Typeable)
163+instance IsString Host where
164+ fromString s = Host s Nothing
159hostConstr :: Constr
166hostConstr :: Constr
160hostConstr = mkConstr hostDataType "Host" [] Prefix
167hostConstr = mkConstr hostDataType "Host" [] Prefix
@@ -591,6 +598,9 @@ data Response = Response
591 , _responseExamples :: Maybe Example
598 , _responseExamples :: Maybe Example
592 } deriving (Eq, Show, Generic, Data, Typeable)
599 } deriving (Eq, Show, Generic, Data, Typeable)
601+instance IsString Response where
602+ fromString s = Response (fromString s) Nothing mempty Nothing
594type HeaderName = Text
604type HeaderName = Text
596data Header = Header
606data Header = Header
@@ -689,6 +699,9 @@ data Tag = Tag
689 , _tagExternalDocs :: Maybe ExternalDocs
699 , _tagExternalDocs :: Maybe ExternalDocs
690 } deriving (Eq, Show, Generic, Data, Typeable)
700 } deriving (Eq, Show, Generic, Data, Typeable)
702+instance IsString Tag where
703+ fromString s = Tag (fromString s) Nothing Nothing
692-- | Allows referencing an external resource for extended documentation.
705-- | Allows referencing an external resource for extended documentation.
693data ExternalDocs = ExternalDocs
706data ExternalDocs = ExternalDocs
694 { -- | A short description of the target documentation.
707 { -- | A short description of the target documentation.
@@ -707,7 +720,10 @@ newtype Reference = Reference { getReference :: Text }
707data Referenced a
720data Referenced a
708 = Ref Reference
721 = Ref Reference
709 | Inline a
722 | Inline a
710− deriving (Eq, Show, Data, Typeable)
723+ deriving (Eq, Show, Functor, Data, Typeable)
725+instance IsString a => IsString (Referenced a) where
726+ fromString = Inline . fromString
712newtype URL = URL { getUrl :: Text } deriving (Eq, Show, ToJSON, FromJSON, Data, Typeable)
728newtype URL = URL { getUrl :: Text } deriving (Eq, Show, ToJSON, FromJSON, Data, Typeable)