| 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
| Arbitrary URI # | |||||
| NFData URI # | |||||
Defined in Text.URI.Types | |||||
| Data URI # | |||||
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 # | |||||
Defined in Text.URI.Types Associated Types
| |||||
| Show URI # | |||||
| Eq URI # | |||||
| Ord URI # | |||||
| Hashable URI # | Since: 0.3.5.0 | ||||
Defined in Text.URI.Types | |||||
| Lift URI # | Since: 0.3.1.0 | ||||
| type Rep URI # | |||||
Defined in Text.URI.Types type Rep URI = D1 ('MetaData "URI" "Text.URI.Types" "modern-uri-0.3.6.1-L63vFQCGe5c96bTqxOmYcs" '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 #
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 #
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 # | |||||
| NFData Authority # | |||||
Defined in Text.URI.Types | |||||
| Data Authority # | |||||
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 # | |||||
Defined in Text.URI.Types Associated Types
| |||||
| Show Authority # | |||||
| Eq Authority # | |||||
| Ord Authority # | |||||
| Hashable Authority # | Since: 0.3.5.0 | ||||
Defined in Text.URI.Types | |||||
| Lift Authority # | Since: 0.3.1.0 | ||||
| type Rep Authority # | |||||
Defined in Text.URI.Types type Rep Authority = D1 ('MetaData "Authority" "Text.URI.Types" "modern-uri-0.3.6.1-L63vFQCGe5c96bTqxOmYcs" '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 # | |||||
| NFData UserInfo # | |||||
Defined in Text.URI.Types | |||||
| Data UserInfo # | |||||
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 # | |||||
Defined in Text.URI.Types Associated Types
| |||||
| Show UserInfo # | |||||
| Eq UserInfo # | |||||
| Ord UserInfo # | |||||
Defined in Text.URI.Types | |||||
| Hashable UserInfo # | Since: 0.3.5.0 | ||||
Defined in Text.URI.Types | |||||
| Lift UserInfo # | Since: 0.3.1.0 | ||||
| type Rep UserInfo # | |||||
Defined in Text.URI.Types type Rep UserInfo = D1 ('MetaData "UserInfo" "Text.URI.Types" "modern-uri-0.3.6.1-L63vFQCGe5c96bTqxOmYcs" '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 #
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
newtype ParseException #
Constructors
| ParseException (ParseErrorBundle Text Void) | Arguments are: original input and parse error |
Instances
| NFData ParseException # | |||||
Defined in Text.URI.Types Methods rnf :: ParseException -> () # | |||||
| Data ParseException # | |||||
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 # | |||||
Defined in Text.URI.Types Methods toException :: ParseException -> SomeException # fromException :: SomeException -> Maybe ParseException # displayException :: ParseException -> String # backtraceDesired :: ParseException -> Bool # | |||||
| Generic ParseException # | |||||
Defined in Text.URI.Types Associated Types
Methods from :: ParseException -> Rep ParseException x # to :: Rep ParseException x -> ParseException # | |||||
| Show ParseException # | |||||
Defined in Text.URI.Types Methods showsPrec :: Int -> ParseException -> ShowS # show :: ParseException -> String # showList :: [ParseException] -> ShowS # | |||||
| Eq ParseException # | |||||
Defined in Text.URI.Types Methods (==) :: ParseException -> ParseException -> Bool # (/=) :: ParseException -> ParseException -> Bool # | |||||
| type Rep ParseException # | |||||
Defined in Text.URI.Types type Rep ParseException = D1 ('MetaData "ParseException" "Text.URI.Types" "modern-uri-0.3.6.1-L63vFQCGe5c96bTqxOmYcs" 'True) (C1 ('MetaCons "ParseException" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ParseErrorBundle Text Void)))) | |||||
newtype ParseExceptionBs #
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 # | |||||
Defined in Text.URI.Types Methods rnf :: ParseExceptionBs -> () # | |||||
| Data ParseExceptionBs # | |||||
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 # | |||||
Defined in Text.URI.Types Methods toException :: ParseExceptionBs -> SomeException # fromException :: SomeException -> Maybe ParseExceptionBs # | |||||
| Generic ParseExceptionBs # | |||||
Defined in Text.URI.Types Associated Types
Methods from :: ParseExceptionBs -> Rep ParseExceptionBs x # to :: Rep ParseExceptionBs x -> ParseExceptionBs # | |||||
| Show ParseExceptionBs # | |||||
Defined in Text.URI.Types Methods showsPrec :: Int -> ParseExceptionBs -> ShowS # show :: ParseExceptionBs -> String # showList :: [ParseExceptionBs] -> ShowS # | |||||
| Eq ParseExceptionBs # | |||||
Defined in Text.URI.Types Methods (==) :: ParseExceptionBs -> ParseExceptionBs -> Bool # (/=) :: ParseExceptionBs -> ParseExceptionBs -> Bool # | |||||
| type Rep ParseExceptionBs # | |||||
Defined in Text.URI.Types type Rep ParseExceptionBs = D1 ('MetaData "ParseExceptionBs" "Text.URI.Types" "modern-uri-0.3.6.1-L63vFQCGe5c96bTqxOmYcs" '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) #
Refined text labelled at the type level.
Instances
| Typeable l => Lift (RText l :: Type) # | Since: 0.3.1.0 | ||||
| Arbitrary (RText 'Fragment) # | |||||
| Arbitrary (RText 'Host) # | |||||
| Arbitrary (RText 'Password) # | |||||
| Arbitrary (RText 'PathPiece) # | |||||
| Arbitrary (RText 'QueryKey) # | |||||
| Arbitrary (RText 'QueryValue) # | |||||
Defined in Text.URI.Types | |||||
| Arbitrary (RText 'Scheme) # | |||||
| Arbitrary (RText 'Username) # | |||||
| NFData (RText l) # | |||||
Defined in Text.URI.Types | |||||
| Typeable l => Data (RText l) # | |||||
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) # toConstr :: RText l -> Constr # 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) # | |||||
Defined in Text.URI.Types Associated Types
| |||||
| Show (RText l) # | |||||
| Eq (RText l) # | |||||
| Ord (RText l) # | |||||
| Hashable (RText l) # | Since: 0.3.5.0 | ||||
Defined in Text.URI.Types | |||||
| type Rep (RText l) # | |||||
Defined in Text.URI.Types | |||||
data RTextLabel #
Refined text labels.
Constructors
| Scheme | See |
| Host | See |
| Username | See |
| Password | See |
| PathPiece | See |
| QueryKey | See |
| QueryValue | See |
| Fragment | See |
Instances
| Data RTextLabel # | |||||
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 # | |||||
Defined in Text.URI.Types Associated Types
| |||||
| Show RTextLabel # | |||||
Defined in Text.URI.Types Methods showsPrec :: Int -> RTextLabel -> ShowS # show :: RTextLabel -> String # showList :: [RTextLabel] -> ShowS # | |||||
| Eq RTextLabel # | |||||
Defined in Text.URI.Types | |||||
| Ord RTextLabel # | |||||
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 # | |||||
Defined in Text.URI.Types type Rep RTextLabel = D1 ('MetaData "RTextLabel" "Text.URI.Types" "modern-uri-0.3.6.1-L63vFQCGe5c96bTqxOmYcs" '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)))) | |||||
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) #
Lift a Text value into .RText QueryValue
This smart constructor does not perform any sort of normalization.
mkFragment :: MonadThrow m => Text -> m (RText 'Fragment) #
unRText :: forall (l :: RTextLabel). RText l -> Text #
data RTextException #
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 # | |||||
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 # | |||||
Defined in Text.URI.Types Methods toException :: RTextException -> SomeException # fromException :: SomeException -> Maybe RTextException # displayException :: RTextException -> String # backtraceDesired :: RTextException -> Bool # | |||||
| Generic RTextException # | |||||
Defined in Text.URI.Types Associated Types
Methods from :: RTextException -> Rep RTextException x # to :: Rep RTextException x -> RTextException # | |||||
| Show RTextException # | |||||
Defined in Text.URI.Types Methods showsPrec :: Int -> RTextException -> ShowS # show :: RTextException -> String # showList :: [RTextException] -> ShowS # | |||||
| Eq RTextException # | |||||
Defined in Text.URI.Types Methods (==) :: RTextException -> RTextException -> Bool # (/=) :: RTextException -> RTextException -> Bool # | |||||
| Ord RTextException # | |||||
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 # | |||||
Defined in Text.URI.Types type Rep RTextException = D1 ('MetaData "RTextException" "Text.URI.Types" "modern-uri-0.3.6.1-L63vFQCGe5c96bTqxOmYcs" '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 #
parserBs :: MonadParsec e ByteString m => m URI #
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 #
Render a given URI value as a strict ByteString.