Spec-Zone.ru › Dart 2

dart:core

Метод parse

UriData parse(
  1. String uri
)

Парсит строку как data URI.

Строка должна иметь формат:

'data:' (type '/' subtype)? (';' attribute '=' value)* (';base64')? ',' data

где type, subtype, attribute и value указаны в RFC-2045, а data представляет собой последовательность символов URI (RFC-2396 uric).

Это означает, что все символы должны быть ASCII, но URI может содержать проценты-экранирования для не-ASCII значений байтов, которые необходимо интерпретировать для преобразования в соответствующую строку.

Парсинг проверяет, что закодированные в Base64 данные валидны, и нормализует их, используя стандартный алфавит Base64 и добавляя нужные символы заполнения. Не-Base64 данные экранируются с помощью процентов-экранирования по необходимости, чтобы сделать их валидными, а существующие экранирования приводятся к нижнему регистру.

Доступ к отдельным частям может завершиться ошибкой позже, если окажется, что они содержат контент, который не может быть успешно декодирован как строка, например, если существующие проценты-экранирования представляют байты, которые не могут быть декодированы выбранным Encoding (см. contentAsString).

Исключение FormatException выбрасывается, если uri не является допустимым URI данных.

Реализация

static UriData parse(String uri) {
  if (uri.length >= 5) {
    int dataDelta = _startsWithData(uri, 0);
    if (dataDelta == 0) {
      // Exact match on "data:".
      return _parse(uri, 5, null);
    }
    if (dataDelta == 0x20) {
      // Starts with a non-normalized "data" scheme containing upper-case
      // letters. Parse anyway, but throw away the scheme.
      return _parse(uri.substring(5), 0, null);
    }
  }
  throw FormatException("Does not start with 'data:'", uri, 0);
}

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-core/UriData/parse.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API