Перейти к содержимому
Топаз6.0 · До релиза
Загрузка →

Поиск в документации

Спецификация 6.0

Выберите результат стрелками и нажмите Enter, чтобы открыть его.

Введите имя API, номер диагностики, правило или тему проекта.

    Библиотека · std.url

    URL.fragment

    Returns the optional encoded fragment and preserves a present empty fragment.

    fragment() -> Option<string>
    Модуль
    std.url →
    Получатель
    URL
    Минимальное число аргументов
    0
    Максимальное число аргументов
    0

    Declaration and parameters

    Ссылка

    Доступность

    Включено по умолчанию · Не определено

    Import std.url in language mode 5.21.

    The current compiler selects std/url.tpz for this language mode. Availability in other released editions and inclusion in each installed distribution are Pending.

    Получатель

    URL

    Ограничения параметров

    URL.scheme returns the lowercase scheme without its delimiter. URL.host returns Some containing the serialized host without user information or a port. IPv6 hosts include their square brackets.

    A URL whose host is absent returns None() from URL.host. A present empty host returns Some containing an empty string. A local file URL can have that empty host.

    URL.path returns the serialized path without the query or fragment. A hierarchical path retains its leading slash. An opaque path has no implied slash. Percent escapes stay encoded so an escaped slash remains path data.

    URL.fragment returns None() when there is no fragment delimiter. An explicit empty fragment returns Some containing an empty string. A present fragment excludes its delimiter and retains percent encoding.

    Scheme, host, path, and fragment inspection cannot fail after construction. Each receiver is evaluated once. The returned strings are immutable and inspection has no external effects.

    Read URL.query for decoded query fields. URL.path and URL.fragment do not apply query decoding. In particular, a plus sign in those components remains a plus sign.

    Результат

    The declared result type is Option<string>.

    Эффекты

    Ошибки

    Result and effects

    Ссылка

    Returns the optional encoded fragment and preserves a present empty fragment.

    Resolved contracts

    Ссылка

    Related entries

    Ссылка

    std.url →

    Read serialized URL components and their absence

    Ссылка
    Правилоtopaz.stdlib.contract.url-components.rule

    Read serialized URL components and their absence

    URL.scheme returns the lowercase scheme without its delimiter. URL.host returns Some containing the serialized host without user information or a port. IPv6 hosts include their square brackets.

    A URL whose host is absent returns None() from URL.host. A present empty host returns Some containing an empty string. A local file URL can have that empty host.

    URL.path returns the serialized path without the query or fragment. A hierarchical path retains its leading slash. An opaque path has no implied slash. Percent escapes stay encoded so an escaped slash remains path data.

    URL.fragment returns None() when there is no fragment delimiter. An explicit empty fragment returns Some containing an empty string. A present fragment excludes its delimiter and retains percent encoding.

    Scheme, host, path, and fragment inspection cannot fail after construction. Each receiver is evaluated once. The returned strings are immutable and inspection has no external effects.

    Read URL.query for decoded query fields. URL.path and URL.fragment do not apply query decoding. In particular, a plus sign in those components remains a plus sign.

    Причина

    Component access must preserve delimiters as data and distinguish absence from an empty component. Encoded path and fragment values can be placed back into a URL without turning an escaped separator into structure.

    Read encoded URL components without decoding delimiters

    Ссылка
    main.tpzRead encoded URL components without decoding delimitersОткрыть песочницу →
    1. import std.url { URL }
    2. import std.io
    3. match (URL.parse("HTTPS://EXAMPLE.COM:8443/a%2Fb?q=a+b#x%20y")) {
    4. case Ok(value) => {
    5. io.writeLine(value.scheme())
    6. match (value.host()) {
    7. case Some(host) => io.writeLine(host)
    8. case None() => io.writeLine("no host")
    9. }
    10. io.writeLine(value.path())
    11. match (value.fragment()) {
    12. case Some(fragment) => io.writeLine(fragment)
    13. case None() => io.writeLine("no fragment")
    14. }
    15. io.writeLine(value.toString())
    16. }
    17. case Err(_) => io.writeLine("parse failed")
    18. }
    Ожидаемый выводКод завершения 0
    https
    example.com
    /a%2Fb
    x%20y
    https://example.com:8443/a%2Fb?q=a+b#x%20y
    
    $ topaz run main.tpz · Целевой продукт 5.21.3
    Ожидаемый результат

    Ожидаемый результат

    Выполнение завершается. Код завершения 0.

    Ожидаемый стандартный вывод
    1. https
    2. example.com
    3. /a%2Fb
    4. x%20y
    5. https://example.com:8443/a%2Fb?q=a+b#x%20y

    Distinguish an absent fragment from an empty fragment

    Ссылка
    main.tpzDistinguish an absent fragment from an empty fragmentОткрыть песочницу →
    1. import std.url { URL }
    2. import std.io
    3. for text in (["mailto:reader@example.com", "mailto:reader@example.com#"]) {
    4. match (URL.parse(text)) {
    5. case Ok(value) => {
    6. io.writeLine(value.scheme())
    7. match (value.host()) {
    8. case None() => io.writeLine("no host")
    9. case Some(host) => io.writeLine("host={host}")
    10. }
    11. io.writeLine(value.path())
    12. match (value.fragment()) {
    13. case None() => io.writeLine("no fragment")
    14. case Some(fragment) => io.writeLine("fragment={fragment}")
    15. }
    16. io.writeLine("{value.query().length}")
    17. }
    18. case Err(_) => io.writeLine("parse failed")
    19. }
    20. }
    Ожидаемый выводКод завершения 0
    mailto
    no host
    reader@example.com
    no fragment
    0
    mailto
    no host
    reader@example.com
    fragment=
    0
    
    $ topaz run main.tpz · Целевой продукт 5.21.3
    Ожидаемый результат

    Ожидаемый результат

    Выполнение завершается. Код завершения 0.

    Ожидаемый стандартный вывод
    1. mailto
    2. no host
    3. reader@example.com
    4. no fragment
    5. 0
    6. mailto
    7. no host
    8. reader@example.com
    9. fragment=
    10. 0

    Read IPv6 and file hosts without losing authority data

    Ссылка
    main.tpzRead IPv6 and file hosts without losing authority dataОткрыть песочницу →
    1. import std.url { URL }
    2. import std.io
    3. for text in (["https://u:p@[2001:DB8::1]:443/", "file:///tmp/a"]) {
    4. match (URL.parse(text)) {
    5. case Ok(value) => {
    6. match (value.host()) {
    7. case Some(host) => io.writeLine("host={host}")
    8. case None() => io.writeLine("no host")
    9. }
    10. io.writeLine(value.toString())
    11. }
    12. case Err(_) => io.writeLine("parse failed")
    13. }
    14. }
    Ожидаемый выводКод завершения 0
    host=[2001:db8::1]
    https://u:p@[2001:db8::1]/
    host=
    file:///tmp/a
    
    $ topaz run main.tpz · Целевой продукт 5.21.3
    Ожидаемый результат

    Ожидаемый результат

    Выполнение завершается. Код завершения 0.

    Ожидаемый стандартный вывод
    1. host=[2001:db8::1]
    2. https://u:p@[2001:db8::1]/
    3. host=
    4. file:///tmp/a

    Serialize a Unicode domain, path, and fragment

    Ссылка
    main.tpzSerialize a Unicode domain, path, and fragmentОткрыть песочницу →
    1. import std.url { URL }
    2. import std.io
    3. match (URL.parse("https://bücher.example/한#α")) {
    4. case Ok(value) => {
    5. match (value.host()) {
    6. case Some(host) => io.writeLine(host)
    7. case None() => io.writeLine("no host")
    8. }
    9. io.writeLine(value.path())
    10. match (value.fragment()) {
    11. case Some(fragment) => io.writeLine(fragment)
    12. case None() => io.writeLine("no fragment")
    13. }
    14. io.writeLine(value.toString())
    15. }
    16. case Err(_) => io.writeLine("parse failed")
    17. }
    Ожидаемый выводКод завершения 0
    xn--bcher-kva.example
    /%ED%95%9C
    %CE%B1
    https://xn--bcher-kva.example/%ED%95%9C#%CE%B1
    
    $ topaz run main.tpz · Целевой продукт 5.21.3
    Ожидаемый результат

    Ожидаемый результат

    Выполнение завершается. Код завершения 0.

    Ожидаемый стандартный вывод
    1. xn--bcher-kva.example
    2. /%ED%95%9C
    3. %CE%B1
    4. https://xn--bcher-kva.example/%ED%95%9C#%CE%B1

    Меню

    Загрузка →