| Copyright | © 2017–present Mark Karpov |
|---|---|
| License | BSD 3 clause |
| Maintainer | Mark Karpov <markkarpov92@gmail.com> |
| Stability | experimental |
| Portability | portable |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
Text.URI
Description
This is a modern library for working with URIs as per RFC 3986:
https://tools.ietf.org/html/rfc3986
This module is intended to be imported qualified, e.g.:
import Text.URI (URI) import qualified Text.URI as URI
See also Text.URI.Lens for lens, prisms, and traversals; see Text.URI.QQ for quasi-quoters for compile-time validation of URIs and refined text components.
Synopsis
- data URI = URI {}
- mkURI :: MonadThrow m => Text -> m URI
- mkURIBs :: MonadThrow m => ByteString -> m URI
- emptyURI :: URI
- makeAbsolute :: RText 'Scheme -> URI -> URI
- isPathAbsolute :: URI -> Bool
- relativeTo :: URI -> URI -> Maybe URI
- data Authority = Authority {}
- data UserInfo = UserInfo {
- uiUsername :: RText 'Username
- uiPassword :: Maybe (RText 'Password)
- data QueryParam
- = QueryFlag (RText 'QueryKey)
- | QueryParam (RText 'QueryKey) (RText 'QueryValue)
- newtype ParseException = ParseException (ParseErrorBundle Text Void)
- newtype ParseExceptionBs = ParseExceptionBs (ParseErrorBundle ByteString Void)
- data RText (l :: RTextLabel)
- data RTextLabel
- mkScheme :: MonadThrow m => Text -> m (RText 'Scheme)
- mkHost :: MonadThrow m => Text -> m (RText 'Host)
- mkUsername :: MonadThrow m => Text -> m (RText 'Username)
- mkPassword :: MonadThrow m => Text -> m (RText 'Password)
- mkPathPiece :: MonadThrow m => Text -> m (RText 'PathPiece)
- mkQueryKey :: MonadThrow m => Text -> m (RText 'QueryKey)
- mkQueryValue :: MonadThrow m => Text -> m (RText 'QueryValue)
- mkFragment :: MonadThrow m => Text -> m (RText 'Fragment)
- unRText :: forall (l :: RTextLabel). RText l -> Text
- data RTextException = RTextException RTextLabel Text
- parser :: MonadParsec e Text m => m URI
- parserBs :: MonadParsec e ByteString m => m URI
- render :: URI -> Text
- render' :: URI -> Builder
- renderBs :: URI -> ByteString
- renderBs' :: URI -> Builder
- renderStr :: URI -> String
- renderStr' :: URI -> ShowS
Data types
Uniform resource identifier (URI) reference. We use refined Text
() here because information is presented in human-readable
form, i.e. percent-decoded, and thus it may contain Unicode characters.RText l
Constructors
| URI | |
Fields
| |
Instances
mkURI :: MonadThrow m => Text -> m URI Source #
Construct a URI from Text. The input you pass to mkURI must be a
valid URI as per RFC 3986, that is, its components should be
percent-encoded where necessary. In case of parse failure
ParseException is thrown.
This function uses the parser parser under the hood, which you can also
use directly in a Megaparsec parser.
mkURIBs :: MonadThrow m => ByteString -> m URI Source #
Construct a URI from ByteString. The input you pass to mkURIBs
must be a valid URI as per RFC 3986, that is, its components should be
percent-encoded where necessary. In case of parse failure
ParseExceptionBs is thrown.
This function uses the parserBs parser under the hood, which you can also
use directly in a Megaparsec parser.
Since: 0.3.3.0
makes the relativeTo reference basereference URI absolute
resolving it against the base URI.
If the base URI is not absolute itself (that is, it has no scheme),
this function returns Nothing.
See also: https://tools.ietf.org/html/rfc3986#section-5.2.
Since: 0.2.0.0
Authority component of URI.
Constructors
| Authority | |
Instances
| Arbitrary Authority Source # | |||||
| NFData Authority Source # | |||||
Defined in Text.URI.Types | |||||
| Data Authority Source # | |||||
Defined in Text.URI.Types Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Authority -> c Authority Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Authority Source # toConstr :: Authority -> Constr Source # dataTypeOf :: Authority -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Authority) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Authority) Source # gmapT :: (forall b. Data b => b -> b) -> Authority -> Authority Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Authority -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Authority -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Authority -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Authority -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Authority -> m Authority Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Authority -> m Authority Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Authority -> m Authority Source # | |||||
| Generic Authority Source # | |||||
Defined in Text.URI.Types Associated Types
| |||||
| Show Authority Source # | |||||
| Eq Authority Source # | |||||
| Ord Authority Source # | |||||
Defined in Text.URI.Types | |||||
| Hashable Authority Source # | Since: 0.3.5.0 | ||||
| Lift Authority Source # | Since: 0.3.1.0 | ||||
| type Rep Authority Source # | |||||
Defined in Text.URI.Types type Rep Authority = D1 ('MetaData "Authority" "Text.URI.Types" "modern-uri-0.3.6.1-D4Z0YXMY1RI7K9XTI4CAA6" 'False) (C1 ('MetaCons "Authority" 'PrefixI 'True) (S1 ('MetaSel ('Just "authUserInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe UserInfo)) :*: (S1 ('MetaSel ('Just "authHost") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RText 'Host)) :*: S1 ('MetaSel ('Just "authPort") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Word))))) | |||||
User info as a combination of username and password.
Constructors
| UserInfo | |
Fields
| |
Instances
| Arbitrary UserInfo Source # | |||||
| NFData UserInfo Source # | |||||
Defined in Text.URI.Types | |||||
| Data UserInfo Source # | |||||
Defined in Text.URI.Types Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> UserInfo -> c UserInfo Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c UserInfo Source # toConstr :: UserInfo -> Constr Source # dataTypeOf :: UserInfo -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c UserInfo) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c UserInfo) Source # gmapT :: (forall b. Data b => b -> b) -> UserInfo -> UserInfo Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> UserInfo -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> UserInfo -> r Source # gmapQ :: (forall d. Data d => d -> u) -> UserInfo -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> UserInfo -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> UserInfo -> m UserInfo Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> UserInfo -> m UserInfo Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> UserInfo -> m UserInfo Source # | |||||
| Generic UserInfo Source # | |||||
Defined in Text.URI.Types Associated Types
| |||||
| Show UserInfo Source # | |||||
| Eq UserInfo Source # | |||||
| Ord UserInfo Source # | |||||
Defined in Text.URI.Types | |||||
| Hashable UserInfo Source # | Since: 0.3.5.0 | ||||
| Lift UserInfo Source # | Since: 0.3.1.0 | ||||
| type Rep UserInfo Source # | |||||
Defined in Text.URI.Types type Rep UserInfo = D1 ('MetaData "UserInfo" "Text.URI.Types" "modern-uri-0.3.6.1-D4Z0YXMY1RI7K9XTI4CAA6" 'False) (C1 ('MetaCons "UserInfo" 'PrefixI 'True) (S1 ('MetaSel ('Just "uiUsername") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RText 'Username)) :*: S1 ('MetaSel ('Just "uiPassword") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (RText 'Password))))) | |||||
data QueryParam Source #
Query parameter either in the form of flag or as a pair of key and value. A key cannot be empty, while a value can.
Constructors
| QueryFlag (RText 'QueryKey) | Flag parameter |
| QueryParam (RText 'QueryKey) (RText 'QueryValue) | Key–value pair |
Instances
| Arbitrary QueryParam Source # | |||||
Defined in Text.URI.Types | |||||
| NFData QueryParam Source # | |||||
Defined in Text.URI.Types Methods rnf :: QueryParam -> () Source # | |||||
| Data QueryParam Source # | |||||
Defined in Text.URI.Types Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> QueryParam -> c QueryParam Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c QueryParam Source # toConstr :: QueryParam -> Constr Source # dataTypeOf :: QueryParam -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c QueryParam) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c QueryParam) Source # gmapT :: (forall b. Data b => b -> b) -> QueryParam -> QueryParam Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> QueryParam -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> QueryParam -> r Source # gmapQ :: (forall d. Data d => d -> u) -> QueryParam -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> QueryParam -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> QueryParam -> m QueryParam Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> QueryParam -> m QueryParam Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> QueryParam -> m QueryParam Source # | |||||
| Generic QueryParam Source # | |||||
Defined in Text.URI.Types Associated Types
| |||||
| Show QueryParam Source # | |||||
Defined in Text.URI.Types | |||||
| Eq QueryParam Source # | |||||
Defined in Text.URI.Types Methods (==) :: QueryParam -> QueryParam -> Bool Source # (/=) :: QueryParam -> QueryParam -> Bool Source # | |||||
| Ord QueryParam Source # | |||||
Defined in Text.URI.Types Methods compare :: QueryParam -> QueryParam -> Ordering Source # (<) :: QueryParam -> QueryParam -> Bool Source # (<=) :: QueryParam -> QueryParam -> Bool Source # (>) :: QueryParam -> QueryParam -> Bool Source # (>=) :: QueryParam -> QueryParam -> Bool Source # max :: QueryParam -> QueryParam -> QueryParam Source # min :: QueryParam -> QueryParam -> QueryParam Source # | |||||
| Hashable QueryParam Source # | Since: 0.3.5.0 | ||||
Defined in Text.URI.Types | |||||
| Lift QueryParam Source # | Since: 0.3.1.0 | ||||
Defined in Text.URI.Types Methods lift :: Quote m => QueryParam -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => QueryParam -> Code m QueryParam Source # | |||||
| type Rep QueryParam Source # | |||||
Defined in Text.URI.Types type Rep QueryParam = D1 ('MetaData "QueryParam" "Text.URI.Types" "modern-uri-0.3.6.1-D4Z0YXMY1RI7K9XTI4CAA6" 'False) (C1 ('MetaCons "QueryFlag" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RText 'QueryKey))) :+: C1 ('MetaCons "QueryParam" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RText 'QueryKey)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RText 'QueryValue)))) | |||||
newtype ParseException Source #
Constructors
| ParseException (ParseErrorBundle Text Void) | Arguments are: original input and parse error |
Instances
| NFData ParseException Source # | |||||
Defined in Text.URI.Types Methods rnf :: ParseException -> () Source # | |||||
| Data ParseException Source # | |||||
Defined in Text.URI.Types Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ParseException -> c ParseException Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ParseException Source # toConstr :: ParseException -> Constr Source # dataTypeOf :: ParseException -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ParseException) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ParseException) Source # gmapT :: (forall b. Data b => b -> b) -> ParseException -> ParseException Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ParseException -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ParseException -> r Source # gmapQ :: (forall d. Data d => d -> u) -> ParseException -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> ParseException -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ParseException -> m ParseException Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ParseException -> m ParseException Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ParseException -> m ParseException Source # | |||||
| Exception ParseException Source # | |||||
Defined in Text.URI.Types Methods toException :: ParseException -> SomeException Source # fromException :: SomeException -> Maybe ParseException Source # | |||||
| Generic ParseException Source # | |||||
Defined in Text.URI.Types Associated Types
Methods from :: ParseException -> Rep ParseException x Source # to :: Rep ParseException x -> ParseException Source # | |||||
| Show ParseException Source # | |||||
Defined in Text.URI.Types | |||||
| Eq ParseException Source # | |||||
Defined in Text.URI.Types Methods (==) :: ParseException -> ParseException -> Bool Source # (/=) :: ParseException -> ParseException -> Bool Source # | |||||
| type Rep ParseException Source # | |||||
Defined in Text.URI.Types type Rep ParseException = D1 ('MetaData "ParseException" "Text.URI.Types" "modern-uri-0.3.6.1-D4Z0YXMY1RI7K9XTI4CAA6" 'True) (C1 ('MetaCons "ParseException" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ParseErrorBundle Text Void)))) | |||||
newtype ParseExceptionBs Source #
Parse exception thrown by mkURIBs when a given ByteString value cannot be
parsed as a URI.
Since: 0.3.3.0
Constructors
| ParseExceptionBs (ParseErrorBundle ByteString Void) | Arguments are: original input and parse error |
Instances
| NFData ParseExceptionBs Source # | |||||
Defined in Text.URI.Types Methods rnf :: ParseExceptionBs -> () Source # | |||||
| Data ParseExceptionBs Source # | |||||
Defined in Text.URI.Types Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ParseExceptionBs -> c ParseExceptionBs Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ParseExceptionBs Source # toConstr :: ParseExceptionBs -> Constr Source # dataTypeOf :: ParseExceptionBs -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ParseExceptionBs) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ParseExceptionBs) Source # gmapT :: (forall b. Data b => b -> b) -> ParseExceptionBs -> ParseExceptionBs Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ParseExceptionBs -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ParseExceptionBs -> r Source # gmapQ :: (forall d. Data d => d -> u) -> ParseExceptionBs -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> ParseExceptionBs -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ParseExceptionBs -> m ParseExceptionBs Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ParseExceptionBs -> m ParseExceptionBs Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ParseExceptionBs -> m ParseExceptionBs Source # | |||||
| Exception ParseExceptionBs Source # | |||||
Defined in Text.URI.Types Methods toException :: ParseExceptionBs -> SomeException Source # fromException :: SomeException -> Maybe ParseExceptionBs Source # | |||||
| Generic ParseExceptionBs Source # | |||||
Defined in Text.URI.Types Associated Types
Methods from :: ParseExceptionBs -> Rep ParseExceptionBs x Source # to :: Rep ParseExceptionBs x -> ParseExceptionBs Source # | |||||
| Show ParseExceptionBs Source # | |||||
Defined in Text.URI.Types | |||||
| Eq ParseExceptionBs Source # | |||||
Defined in Text.URI.Types Methods (==) :: ParseExceptionBs -> ParseExceptionBs -> Bool Source # (/=) :: ParseExceptionBs -> ParseExceptionBs -> Bool Source # | |||||
| type Rep ParseExceptionBs Source # | |||||
Defined in Text.URI.Types type Rep ParseExceptionBs = D1 ('MetaData "ParseExceptionBs" "Text.URI.Types" "modern-uri-0.3.6.1-D4Z0YXMY1RI7K9XTI4CAA6" 'True) (C1 ('MetaCons "ParseExceptionBs" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ParseErrorBundle ByteString Void)))) | |||||
Refined text
Refined text values can only be created by using the smart constructors
listed below, such as mkScheme. This eliminates the possibility of
having an invalid component in URI which could invalidate the whole
URI.
Note that the refined text RText type is labelled at the type level
with RTextLabels, which see.
When an invalid Text value is passed to a smart constructor,
it rejects it by throwing the RTextException. Remember that the Maybe
datatype is also an instance of MonadThrow, and so
one could as well use the smart constructors in the Maybe monad.
data RText (l :: RTextLabel) Source #
Refined text labelled at the type level.
Instances
| Typeable l => Lift (RText l :: Type) Source # | Since: 0.3.1.0 | ||||
| Arbitrary (RText 'Fragment) Source # | |||||
| Arbitrary (RText 'Host) Source # | |||||
| Arbitrary (RText 'Password) Source # | |||||
| Arbitrary (RText 'PathPiece) Source # | |||||
| Arbitrary (RText 'QueryKey) Source # | |||||
| Arbitrary (RText 'QueryValue) Source # | |||||
Defined in Text.URI.Types Methods arbitrary :: Gen (RText 'QueryValue) Source # shrink :: RText 'QueryValue -> [RText 'QueryValue] Source # | |||||
| Arbitrary (RText 'Scheme) Source # | |||||
| Arbitrary (RText 'Username) Source # | |||||
| NFData (RText l) Source # | |||||
Defined in Text.URI.Types | |||||
| Typeable l => Data (RText l) Source # | |||||
Defined in Text.URI.Types Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RText l -> c (RText l) Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (RText l) Source # toConstr :: RText l -> Constr Source # dataTypeOf :: RText l -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (RText l)) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (RText l)) Source # gmapT :: (forall b. Data b => b -> b) -> RText l -> RText l Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RText l -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RText l -> r Source # gmapQ :: (forall d. Data d => d -> u) -> RText l -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> RText l -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> RText l -> m (RText l) Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RText l -> m (RText l) Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RText l -> m (RText l) Source # | |||||
| Generic (RText l) Source # | |||||
Defined in Text.URI.Types Associated Types
| |||||
| Show (RText l) Source # | |||||
| Eq (RText l) Source # | |||||
| Ord (RText l) Source # | |||||
| Hashable (RText l) Source # | Since: 0.3.5.0 | ||||
| type Rep (RText l) Source # | |||||
Defined in Text.URI.Types | |||||
data RTextLabel Source #
Refined text labels.
Constructors
| Scheme | See |
| Host | See |
| Username | See |
| Password | See |
| PathPiece | See |
| QueryKey | See |
| QueryValue | See |
| Fragment | See |
Instances
| Data RTextLabel Source # | |||||
Defined in Text.URI.Types Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RTextLabel -> c RTextLabel Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RTextLabel Source # toConstr :: RTextLabel -> Constr Source # dataTypeOf :: RTextLabel -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RTextLabel) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RTextLabel) Source # gmapT :: (forall b. Data b => b -> b) -> RTextLabel -> RTextLabel Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RTextLabel -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RTextLabel -> r Source # gmapQ :: (forall d. Data d => d -> u) -> RTextLabel -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> RTextLabel -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> RTextLabel -> m RTextLabel Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RTextLabel -> m RTextLabel Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RTextLabel -> m RTextLabel Source # | |||||
| Generic RTextLabel Source # | |||||
Defined in Text.URI.Types Associated Types
| |||||
| Show RTextLabel Source # | |||||
Defined in Text.URI.Types | |||||
| Eq RTextLabel Source # | |||||
Defined in Text.URI.Types Methods (==) :: RTextLabel -> RTextLabel -> Bool Source # (/=) :: RTextLabel -> RTextLabel -> Bool Source # | |||||
| Ord RTextLabel Source # | |||||
Defined in Text.URI.Types Methods compare :: RTextLabel -> RTextLabel -> Ordering Source # (<) :: RTextLabel -> RTextLabel -> Bool Source # (<=) :: RTextLabel -> RTextLabel -> Bool Source # (>) :: RTextLabel -> RTextLabel -> Bool Source # (>=) :: RTextLabel -> RTextLabel -> Bool Source # max :: RTextLabel -> RTextLabel -> RTextLabel Source # min :: RTextLabel -> RTextLabel -> RTextLabel Source # | |||||
| type Rep RTextLabel Source # | |||||
Defined in Text.URI.Types type Rep RTextLabel = D1 ('MetaData "RTextLabel" "Text.URI.Types" "modern-uri-0.3.6.1-D4Z0YXMY1RI7K9XTI4CAA6" 'False) (((C1 ('MetaCons "Scheme" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Host" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Username" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Password" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "PathPiece" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "QueryKey" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "QueryValue" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Fragment" 'PrefixI 'False) (U1 :: Type -> Type)))) | |||||
mkScheme :: MonadThrow m => Text -> m (RText 'Scheme) Source #
mkUsername :: MonadThrow m => Text -> m (RText 'Username) Source #
mkPassword :: MonadThrow m => Text -> m (RText 'Password) Source #
mkPathPiece :: MonadThrow m => Text -> m (RText 'PathPiece) Source #
mkQueryKey :: MonadThrow m => Text -> m (RText 'QueryKey) Source #
mkQueryValue :: MonadThrow m => Text -> m (RText 'QueryValue) Source #
Lift a Text value into .RText QueryValue
This smart constructor does not perform any sort of normalization.
mkFragment :: MonadThrow m => Text -> m (RText 'Fragment) Source #
data RTextException Source #
The exception is thrown when a refined value cannot be
constructed due to the fact that given RText lText value is not correct.
Constructors
| RTextException RTextLabel Text |
|
Instances
| Data RTextException Source # | |||||
Defined in Text.URI.Types Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RTextException -> c RTextException Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RTextException Source # toConstr :: RTextException -> Constr Source # dataTypeOf :: RTextException -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RTextException) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RTextException) Source # gmapT :: (forall b. Data b => b -> b) -> RTextException -> RTextException Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RTextException -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RTextException -> r Source # gmapQ :: (forall d. Data d => d -> u) -> RTextException -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> RTextException -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> RTextException -> m RTextException Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RTextException -> m RTextException Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RTextException -> m RTextException Source # | |||||
| Exception RTextException Source # | |||||
Defined in Text.URI.Types Methods toException :: RTextException -> SomeException Source # fromException :: SomeException -> Maybe RTextException Source # | |||||
| Generic RTextException Source # | |||||
Defined in Text.URI.Types Associated Types
Methods from :: RTextException -> Rep RTextException x Source # to :: Rep RTextException x -> RTextException Source # | |||||
| Show RTextException Source # | |||||
Defined in Text.URI.Types | |||||
| Eq RTextException Source # | |||||
Defined in Text.URI.Types Methods (==) :: RTextException -> RTextException -> Bool Source # (/=) :: RTextException -> RTextException -> Bool Source # | |||||
| Ord RTextException Source # | |||||
Defined in Text.URI.Types Methods compare :: RTextException -> RTextException -> Ordering Source # (<) :: RTextException -> RTextException -> Bool Source # (<=) :: RTextException -> RTextException -> Bool Source # (>) :: RTextException -> RTextException -> Bool Source # (>=) :: RTextException -> RTextException -> Bool Source # max :: RTextException -> RTextException -> RTextException Source # min :: RTextException -> RTextException -> RTextException Source # | |||||
| type Rep RTextException Source # | |||||
Defined in Text.URI.Types type Rep RTextException = D1 ('MetaData "RTextException" "Text.URI.Types" "modern-uri-0.3.6.1-D4Z0YXMY1RI7K9XTI4CAA6" 'False) (C1 ('MetaCons "RTextException" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RTextLabel) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) | |||||
Parsing
The input you feed into the parsers must be a valid URI as per RFC 3986, that is, its components should be percent-encoded where necessary.
parserBs :: MonadParsec e ByteString m => m URI Source #
This parser can be used to parse URI from strict ByteString.
Remember to use a concrete non-polymorphic parser type for efficiency.
Since: 0.0.2.0
Rendering
Rendering functions take care of constructing correct URI
representation as per RFC 3986, that is, percent-encoding will be applied
when necessary automatically.
renderBs :: URI -> ByteString Source #
Render a given URI value as a strict ByteString.