@@ -1,4 +1,5 @@
1{-# LANGUAGE DeriveDataTypeable #-}
1{-# LANGUAGE DeriveDataTypeable #-}
2+{-# LANGUAGE DeriveFunctor #-}
2{-# LANGUAGE DeriveGeneric #-}
3{-# LANGUAGE DeriveGeneric #-}
3{-# LANGUAGE DeriveTraversable #-}
4{-# LANGUAGE DeriveTraversable #-}
4{-# LANGUAGE FlexibleContexts #-}
5{-# LANGUAGE FlexibleContexts #-}
@@ -23,7 +24,7 @@ import Data.Map (Map)
23import qualified Data.Map as Map
24import qualified Data.Map as Map
24import Data.Monoid
25import Data.Monoid
25import Data.Scientific (Scientific)
26import Data.Scientific (Scientific)
26−import Data.String (fromString)
27+import Data.String (IsString(..))
27import Data.Text (Text)
28import Data.Text (Text)
28import qualified Data.Text as Text
29import qualified Data.Text as Text
29import GHC.Generics (Generic)
30import GHC.Generics (Generic)
@@ -145,12 +146,18 @@ data License = License
145 , _licenseUrl :: Maybe URL
146 , _licenseUrl :: Maybe URL
146 } deriving (Eq, Show, Generic, Data, Typeable)
147 } deriving (Eq, Show, Generic, Data, Typeable)
149+instance IsString License where
150+ fromString s = License (fromString s) Nothing
148-- | The host (name or ip) serving the API. It MAY include a port.
152-- | The host (name or ip) serving the API. It MAY include a port.
149data Host = Host
153data Host = Host
150 { _hostName :: HostName -- ^ Host name.
154 { _hostName :: HostName -- ^ Host name.
151 , _hostPort :: Maybe PortNumber -- ^ Optional port.
155 , _hostPort :: Maybe PortNumber -- ^ Optional port.
152 } deriving (Eq, Show, Generic, Typeable)
156 } deriving (Eq, Show, Generic, Typeable)
158+instance IsString Host where
159+ fromString s = Host s Nothing
154hostConstr :: Constr
161hostConstr :: Constr
155hostConstr = mkConstr hostDataType "Host" [] Prefix
162hostConstr = mkConstr hostDataType "Host" [] Prefix
@@ -582,6 +589,9 @@ data Response = Response
582 , _responseExamples :: Maybe Example
589 , _responseExamples :: Maybe Example
583 } deriving (Eq, Show, Generic, Data, Typeable)
590 } deriving (Eq, Show, Generic, Data, Typeable)
592+instance IsString Response where
593+ fromString s = Response (fromString s) Nothing mempty Nothing
585type HeaderName = Text
595type HeaderName = Text
587data Header = Header
597data Header = Header
@@ -680,6 +690,9 @@ data Tag = Tag
680 , _tagExternalDocs :: Maybe ExternalDocs
690 , _tagExternalDocs :: Maybe ExternalDocs
681 } deriving (Eq, Show, Generic, Data, Typeable)
691 } deriving (Eq, Show, Generic, Data, Typeable)
693+instance IsString Tag where
694+ fromString s = Tag (fromString s) Nothing Nothing
683-- | Allows referencing an external resource for extended documentation.
696-- | Allows referencing an external resource for extended documentation.
684data ExternalDocs = ExternalDocs
697data ExternalDocs = ExternalDocs
685 { -- | A short description of the target documentation.
698 { -- | A short description of the target documentation.
@@ -698,7 +711,10 @@ newtype Reference = Reference { getReference :: Text }
698data Referenced a
711data Referenced a
699 = Ref Reference
712 = Ref Reference
700 | Inline a
713 | Inline a
701− deriving (Eq, Show, Data, Typeable)
714+ deriving (Eq, Show, Functor, Data, Typeable)
716+instance IsString a => IsString (Referenced a) where
717+ fromString = Inline . fromString
703newtype URL = URL { getUrl :: Text } deriving (Eq, Show, ToJSON, FromJSON, Data, Typeable)
719newtype URL = URL { getUrl :: Text } deriving (Eq, Show, ToJSON, FromJSON, Data, Typeable)