| 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 {
- uriScheme :: Maybe (RText 'Scheme)
- uriAuthority :: Either Bool Authority
- uriPath :: Maybe (Bool, NonEmpty (RText 'PathPiece))
- uriQuery :: [QueryParam]
- uriFragment :: Maybe (RText 'Fragment)
- 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
| Arbitrary URI Source # | |||||
| NFData URI Source # | |||||
Defined in Text.URI.Types | |||||
| Data URI Source # | |||||
Defined in Text.URI.Types Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> URI -> c URI gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c URI dataTypeOf :: URI -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c URI) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c URI) gmapT :: (forall b. Data b => b -> b) -> URI -> URI gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> URI -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> URI -> r gmapQ :: (forall d. Data d => d -> u) -> URI -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> URI -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> URI -> m URI gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> URI -> m URI gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> URI -> m URI | |||||
| Generic URI Source # | |||||
Defined in Text.URI.Types Associated Types
| |||||
| Show URI Source # | |||||
| Eq URI Source # | |||||
| Ord URI Source # | |||||
| Hashable URI Source # | Since: 0.3.5.0 | ||||
Defined in Text.URI.Types | |||||
| Lift URI Source # | Since: 0.3.1.0 | ||||
| type Rep URI Source # | |||||
Defined in Text.URI.Types type Rep URI = D1 ('MetaData "URI" "Text.URI.Types" "modern-uri-0.3.6.1-6toVe9uhYIa3giOVBxWlW" 'False) (C1 ('MetaCons "URI" 'PrefixI 'True) ((S1 ('MetaSel ('Just "uriScheme") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (RText 'Scheme))) :*: S1 ('MetaSel ('Just "uriAuthority") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Either Bool Authority))) :*: (S1 ('MetaSel ('Just "uriPath") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Bool, NonEmpty (RText 'PathPiece)))) :*: (S1 ('MetaSel ('Just "uriQuery") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [QueryParam]) :*: S1 ('MetaSel ('Just "uriFragment") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (RText 'Fragment))))))) | |||||
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
isPathAbsolute :: URI -> Bool Source #
Return True if path in a given URI is absolute.
Since: 0.1.0.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 gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Authority toConstr :: Authority -> Constr dataTypeOf :: Authority -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Authority) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Authority) gmapT :: (forall b. Data b => b -> b) -> Authority -> Authority gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Authority -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Authority -> r gmapQ :: (forall d. Data d => d -> u) -> Authority -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> Authority -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> Authority -> m Authority gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Authority -> m Authority gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Authority -> m Authority | |||||
| 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 | ||||
Defined in Text.URI.Types | |||||
| 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-6toVe9uhYIa3giOVBxWlW" '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 gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c UserInfo toConstr :: UserInfo -> Constr dataTypeOf :: UserInfo -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c UserInfo) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c UserInfo) gmapT :: (forall b. Data b => b -> b) -> UserInfo -> UserInfo gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> UserInfo -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> UserInfo -> r gmapQ :: (forall d. Data d => d -> u) -> UserInfo -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> UserInfo -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> UserInfo -> m UserInfo gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> UserInfo -> m UserInfo gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> UserInfo -> m UserInfo | |||||
| Generic UserInfo Source # | |||||
Defined in Text.URI.Types Associated Types
| |||||
| Show UserInfo Source # | |||||
| Eq UserInfo Source # | |||||
| Ord UserInfo Source # | |||||
| Hashable UserInfo Source # | Since: 0.3.5.0 | ||||
Defined in Text.URI.Types | |||||
| 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-6toVe9uhYIa3giOVBxWlW" '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 -> () | |||||
| 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 gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c QueryParam toConstr :: QueryParam -> Constr dataTypeOf :: QueryParam -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c QueryParam) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c QueryParam) gmapT :: (forall b. Data b => b -> b) -> QueryParam -> QueryParam gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> QueryParam -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> QueryParam -> r gmapQ :: (forall d. Data d => d -> u) -> QueryParam -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> QueryParam -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> QueryParam -> m QueryParam gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> QueryParam -> m QueryParam gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> QueryParam -> m QueryParam | |||||
| Generic QueryParam Source # | |||||
Defined in Text.URI.Types Associated Types
| |||||
| Show QueryParam Source # | |||||
Defined in Text.URI.Types Methods showsPrec :: Int -> QueryParam -> ShowS show :: QueryParam -> String showList :: [QueryParam] -> ShowS | |||||
| Eq QueryParam Source # | |||||
Defined in Text.URI.Types | |||||
| Ord QueryParam Source # | |||||
Defined in Text.URI.Types Methods compare :: QueryParam -> QueryParam -> Ordering (<) :: QueryParam -> QueryParam -> Bool (<=) :: QueryParam -> QueryParam -> Bool (>) :: QueryParam -> QueryParam -> Bool (>=) :: QueryParam -> QueryParam -> Bool max :: QueryParam -> QueryParam -> QueryParam min :: QueryParam -> QueryParam -> QueryParam | |||||
| 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 liftTyped :: forall (m :: Type -> Type). Quote m => QueryParam -> Code m QueryParam | |||||
| type Rep QueryParam Source # | |||||
Defined in Text.URI.Types type Rep QueryParam = D1 ('MetaData "QueryParam" "Text.URI.Types" "modern-uri-0.3.6.1-6toVe9uhYIa3giOVBxWlW" '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 #
Parse exception thrown by mkURI when a given Text value cannot be
parsed as a URI.
Constructors
| ParseException (ParseErrorBundle Text Void) | Arguments are: original input and parse error |
Instances
| NFData ParseException Source # | |||||
Defined in Text.URI.Types Methods rnf :: ParseException -> () | |||||
| 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 gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ParseException toConstr :: ParseException -> Constr dataTypeOf :: ParseException -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ParseException) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ParseException) gmapT :: (forall b. Data b => b -> b) -> ParseException -> ParseException gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ParseException -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ParseException -> r gmapQ :: (forall d. Data d => d -> u) -> ParseException -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> ParseException -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> ParseException -> m ParseException gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ParseException -> m ParseException gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ParseException -> m ParseException | |||||
| Exception ParseException Source # | |||||
Defined in Text.URI.Types Methods toException :: ParseException -> SomeException fromException :: SomeException -> Maybe ParseException displayException :: ParseException -> String backtraceDesired :: ParseException -> Bool | |||||
| Generic ParseException Source # | |||||
Defined in Text.URI.Types Associated Types
| |||||
| Show ParseException Source # | |||||
Defined in Text.URI.Types Methods showsPrec :: Int -> ParseException -> ShowS show :: ParseException -> String showList :: [ParseException] -> ShowS | |||||
| Eq ParseException Source # | |||||
Defined in Text.URI.Types Methods (==) :: ParseException -> ParseException -> Bool (/=) :: ParseException -> ParseException -> Bool | |||||
| type Rep ParseException Source # | |||||
Defined in Text.URI.Types type Rep ParseException = D1 ('MetaData "ParseException" "Text.URI.Types" "modern-uri-0.3.6.1-6toVe9uhYIa3giOVBxWlW" '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 -> () | |||||
| 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 gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ParseExceptionBs toConstr :: ParseExceptionBs -> Constr dataTypeOf :: ParseExceptionBs -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ParseExceptionBs) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ParseExceptionBs) gmapT :: (forall b. Data b => b -> b) -> ParseExceptionBs -> ParseExceptionBs gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ParseExceptionBs -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ParseExceptionBs -> r gmapQ :: (forall d. Data d => d -> u) -> ParseExceptionBs -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> ParseExceptionBs -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> ParseExceptionBs -> m ParseExceptionBs gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ParseExceptionBs -> m ParseExceptionBs gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ParseExceptionBs -> m ParseExceptionBs | |||||
| Exception ParseExceptionBs Source # | |||||
Defined in Text.URI.Types Methods toException :: ParseExceptionBs -> SomeException fromException :: SomeException -> Maybe ParseExceptionBs displayException :: ParseExceptionBs -> String backtraceDesired :: ParseExceptionBs -> Bool | |||||
| Generic ParseExceptionBs Source # | |||||
Defined in Text.URI.Types Associated Types
Methods from :: ParseExceptionBs -> Rep ParseExceptionBs x to :: Rep ParseExceptionBs x -> ParseExceptionBs | |||||
| Show ParseExceptionBs Source # | |||||
Defined in Text.URI.Types Methods showsPrec :: Int -> ParseExceptionBs -> ShowS show :: ParseExceptionBs -> String showList :: [ParseExceptionBs] -> ShowS | |||||
| Eq ParseExceptionBs Source # | |||||
Defined in Text.URI.Types Methods (==) :: ParseExceptionBs -> ParseExceptionBs -> Bool (/=) :: ParseExceptionBs -> ParseExceptionBs -> Bool | |||||
| type Rep ParseExceptionBs Source # | |||||
Defined in Text.URI.Types type Rep ParseExceptionBs = D1 ('MetaData "ParseExceptionBs" "Text.URI.Types" "modern-uri-0.3.6.1-6toVe9uhYIa3giOVBxWlW" '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 | |||||
| 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) gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (RText l) dataTypeOf :: RText l -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (RText l)) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (RText l)) gmapT :: (forall b. Data b => b -> b) -> RText l -> RText l gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RText l -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RText l -> r gmapQ :: (forall d. Data d => d -> u) -> RText l -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> RText l -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> RText l -> m (RText l) gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RText l -> m (RText l) gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RText l -> m (RText l) | |||||
| 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 | ||||
Defined in Text.URI.Types | |||||
| type Rep (RText l) Source # | |||||
Defined in Text.URI.Types type Rep (RText l) = D1 ('MetaData "RText" "Text.URI.Types" "modern-uri-0.3.6.1-6toVe9uhYIa3giOVBxWlW" 'True) (C1 ('MetaCons "RText" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) | |||||
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 gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RTextLabel toConstr :: RTextLabel -> Constr dataTypeOf :: RTextLabel -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RTextLabel) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RTextLabel) gmapT :: (forall b. Data b => b -> b) -> RTextLabel -> RTextLabel gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RTextLabel -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RTextLabel -> r gmapQ :: (forall d. Data d => d -> u) -> RTextLabel -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> RTextLabel -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> RTextLabel -> m RTextLabel gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RTextLabel -> m RTextLabel gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RTextLabel -> m RTextLabel | |||||
| Generic RTextLabel Source # | |||||
Defined in Text.URI.Types Associated Types
| |||||
| Show RTextLabel Source # | |||||
Defined in Text.URI.Types Methods showsPrec :: Int -> RTextLabel -> ShowS show :: RTextLabel -> String showList :: [RTextLabel] -> ShowS | |||||
| Eq RTextLabel Source # | |||||
Defined in Text.URI.Types | |||||
| Ord RTextLabel Source # | |||||
Defined in Text.URI.Types Methods compare :: RTextLabel -> RTextLabel -> Ordering (<) :: RTextLabel -> RTextLabel -> Bool (<=) :: RTextLabel -> RTextLabel -> Bool (>) :: RTextLabel -> RTextLabel -> Bool (>=) :: RTextLabel -> RTextLabel -> Bool max :: RTextLabel -> RTextLabel -> RTextLabel min :: RTextLabel -> RTextLabel -> RTextLabel | |||||
| type Rep RTextLabel Source # | |||||
Defined in Text.URI.Types type Rep RTextLabel = D1 ('MetaData "RTextLabel" "Text.URI.Types" "modern-uri-0.3.6.1-6toVe9uhYIa3giOVBxWlW" '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 #
Lift a Text value into 'RText .QueryKey
This smart constructor does not perform any sort of normalization.
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 #
unRText :: forall (l :: RTextLabel). RText l -> Text Source #
Project a plain strict Text value from a refined value.RText l
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 gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RTextException toConstr :: RTextException -> Constr dataTypeOf :: RTextException -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RTextException) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RTextException) gmapT :: (forall b. Data b => b -> b) -> RTextException -> RTextException gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RTextException -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RTextException -> r gmapQ :: (forall d. Data d => d -> u) -> RTextException -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> RTextException -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> RTextException -> m RTextException gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RTextException -> m RTextException gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RTextException -> m RTextException | |||||
| Exception RTextException Source # | |||||
Defined in Text.URI.Types Methods toException :: RTextException -> SomeException fromException :: SomeException -> Maybe RTextException displayException :: RTextException -> String backtraceDesired :: RTextException -> Bool | |||||
| Generic RTextException Source # | |||||
Defined in Text.URI.Types Associated Types
| |||||
| Show RTextException Source # | |||||
Defined in Text.URI.Types Methods showsPrec :: Int -> RTextException -> ShowS show :: RTextException -> String showList :: [RTextException] -> ShowS | |||||
| Eq RTextException Source # | |||||
Defined in Text.URI.Types Methods (==) :: RTextException -> RTextException -> Bool (/=) :: RTextException -> RTextException -> Bool | |||||
| Ord RTextException Source # | |||||
Defined in Text.URI.Types Methods compare :: RTextException -> RTextException -> Ordering (<) :: RTextException -> RTextException -> Bool (<=) :: RTextException -> RTextException -> Bool (>) :: RTextException -> RTextException -> Bool (>=) :: RTextException -> RTextException -> Bool max :: RTextException -> RTextException -> RTextException min :: RTextException -> RTextException -> RTextException | |||||
| type Rep RTextException Source # | |||||
Defined in Text.URI.Types type Rep RTextException = D1 ('MetaData "RTextException" "Text.URI.Types" "modern-uri-0.3.6.1-6toVe9uhYIa3giOVBxWlW" '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.
parser :: MonadParsec e Text m => m URI Source #
This parser can be used to parse URI from strict Text. Remember to
use a concrete non-polymorphic parser type for efficiency.
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.
renderStr' :: URI -> ShowS Source #
Render a given URI value as ShowS.
Since: 0.0.2.0