Structure
WebURL.UTF8View
public struct UTF8View
A view of the UTF-8 code-units in a serialized URL.
This view provides efficient random-access as well as read-write access to the code-units of a serialized URL string, including information about where each URL component is situated. The code-units are guaranteed to only contain ASCII code-points.
Component properties (such as scheme, path, and query) and setter methods (such as setQuery), have the same semantics and
behaviour as the corresponding methods on WebURL.
Relationships
Member Of
WebURLA Uniform Resource Locator (URL) is a universal identifier, which often describes the location of a resource.
Conforms To
RandomAccessCollection
Nested Type Aliases
Index
public typealias Index = Int
Indices
public typealias Indices = Range<Index>
Element
public typealias Element = UInt8
Properties
startIndex
@inlinable
public var startIndex: Index
endIndex
@inlinable
public var endIndex: Index
indices
@inlinable
public var indices: Range<Index>
count
@inlinable
public var count: Int
scheme
public var scheme: SubSequence
The UTF-8 code-units containing this URL's scheme.
username
public var username: SubSequence?
The UTF-8 code-units containing this URL's username, if present.
password
public var password: SubSequence?
The UTF-8 code-units containing this URL's password, if present.
hostname
public var hostname: SubSequence?
The UTF-8 code-units containing this URL's hostname, if present.
port
public var port: SubSequence?
The UTF-8 code-units containing this URL's port, if present.
path
public var path: SubSequence
The UTF-8 code-units containing this URL's path.
query
public var query: SubSequence?
The UTF-8 code-units containing this URL's query, if present.
fragment
public var fragment: SubSequence?
The UTF-8 code-units containing this URL's fragment, if present.
Methods
pathComponent(_:)
public func pathComponent(_ component: WebURL.PathComponents.Index) -> SubSequence
The UTF-8 code-units containing the given path component.
index(after:)
@inlinable
public func index(after i: Index) -> Index
formIndex(after:)
@inlinable
public func formIndex(after i: inout Index)
index(before:)
@inlinable
public func index(before i: Index) -> Index
formIndex(before:)
@inlinable
public func formIndex(before i: inout Index)
index(_:offsetBy:)
@inlinable
public func index(_ i: Index, offsetBy distance: Int) -> Index
distance(from:to:)
@inlinable
public func distance(from start: Index, to end: Index) -> Int
withContiguousStorageIfAvailable(_:)
@inlinable @inline(__always)
public func withContiguousStorageIfAvailable<R>(_ body: (UnsafeBufferPointer<UInt8>) throws -> R) rethrows -> R?
withUnsafeBufferPointer(_:)
@inlinable @inline(__always)
public func withUnsafeBufferPointer<R>(_ body: (UnsafeBufferPointer<UInt8>) throws -> R) rethrows -> R
Invokes body with a pointer to the contiguous UTF-8 code-units of the serialized URL string.
Parameters
| Name | Type | Description |
|---|---|---|
| body | (UnsafeBufferPointer<UInt8>) throws -> R |
A closure which processes the content of the serialized URL. |
resolve(_:)
@inlinable @inline(__always)
public func resolve<UTF8Bytes>(
_ utf8: UTF8Bytes
) -> WebURL? where UTF8Bytes: BidirectionalCollection, UTF8Bytes.Element == UInt8
Parses the given string, which is provided as a collection of UTF-8 code-units, with this URL as its base.
This function supports a wide range of relative URL strings, producing the same result as an HTML <a> tag on the page given by this URL.
It should be noted that this method accepts protocol-relative URLs, which are able to direct to a different hostname, as well as absolute URL strings, which do not copy any information from their base URLs.
setScheme(_:)
@inlinable
public mutating func setScheme<UTF8Bytes>(
_ newScheme: UTF8Bytes
) throws where UTF8Bytes: Collection, UTF8Bytes.Element == UInt8
Replaces this URL's scheme with the given UTF-8 code-units.
setUsername(_:)
@inlinable
public mutating func setUsername<UTF8Bytes>(
_ newUsername: UTF8Bytes?
) throws where UTF8Bytes: Collection, UTF8Bytes.Element == UInt8
Replaces this URL's username with the given UTF-8 code-units.
Any code-points which are not valid for use in the URL's user-info section will be percent-encoded.
setPassword(_:)
@inlinable
public mutating func setPassword<UTF8Bytes>(
_ newPassword: UTF8Bytes?
) throws where UTF8Bytes: Collection, UTF8Bytes.Element == UInt8
Replaces this URL's password with the given UTF-8 code-units.
Any code-points which are not valid for use in the URL's user-info section will be percent-encoded.
setHostname(_:)
@inlinable
public mutating func setHostname<UTF8Bytes>(
_ newHostname: UTF8Bytes?
) throws where UTF8Bytes: BidirectionalCollection, UTF8Bytes.Element == UInt8
Replaces this URL's hostname with the given UTF-8 code-units.
Unlike other setters, not all code-points which are invalid for use in hostnames will be percent-encoded. If the new content contains a forbidden host code-point, the operation will fail.
setPath(_:)
@inlinable
public mutating func setPath<UTF8Bytes>(
_ newPath: UTF8Bytes
) throws where UTF8Bytes: BidirectionalCollection, UTF8Bytes.Element == UInt8
Replaces this URL's path with the given UTF-8 code-units.
The given path string will be lexically simplified, and any code-points in the path's components that are not valid for use will be percent-encoded.
setQuery(_:)
@inlinable
public mutating func setQuery<UTF8Bytes>(
_ newQuery: UTF8Bytes?
) throws where UTF8Bytes: Collection, UTF8Bytes.Element == UInt8
Replaces this URL's query with the given UTF-8 code-units.
Any code-points which are not valid for use in the URL's query will be percent-encoded.
Note that the set of code-points which are valid depends on the URL's scheme.
setFragment(_:)
@inlinable
public mutating func setFragment<UTF8Bytes>(
_ newFragment: UTF8Bytes?
) throws where UTF8Bytes: Collection, UTF8Bytes.Element == UInt8
Replaces this URL's fragment with the given UTF-8 code-units.
Any code-points which are not valid for use in the URL's fragment will be percent-encoded.