Spec-Zone.ru › Elixir 1.17

Source Inspect.Opts

Определяет опции, используемые протоколом Inspect.

Доступны следующие поля:

  • :base - выводит целые числа и бинарные данные как :binary, :octal, :decimal, или :hex. По умолчанию :decimal.

  • :binaries - при :as_binaries все бинарные данные будут выводиться в формате битовой синтаксики.

    При :as_strings все бинарные данные будут выводиться как строки, а непечатные байты будут экранированы.

    При использовании значения по умолчанию :infer, бинарные данные будут выводиться как строки, если :base является :decimal, и если они печатные, в противном случае в битовом формате. Обратитесь к String.printable?/1, чтобы узнать, когда строка является печатной.

  • :charlists - при :as_charlists все списки будут выводиться как символьные списки (charlists), а непечатные элементы будут экранированы.

    При :as_lists все списки будут выводиться как списки.

    При использовании значения по умолчанию :infer, список будет выводиться как символьный список (charlist), если он печатный, в противном случае как список. Обратитесь к List.ascii_printable?/1, чтобы узнать, когда символьный список (charlist) является печатным.

  • :custom_options (с версии v1.9.0) - ключевое слово, хранящее пользовательские опции. Полезно при реализации протокола Inspect для вложенных структур, чтобы передать пользовательские опции.

    Поддерживает некоторые предварительно определенные ключи:

    • :sort_maps (с версии v1.14.4) - если установлено в true, сортирует пары ключ-значение в картах. Это может быть полезно для определения карты для тестирования, поскольку порядок ключей в картах произвольный.
  • :inspect_fun (с версии v1.9.0) - функция для построения документов алгебры. По умолчанию Inspect.Opts.default_inspect_fun/0.

  • :limit - ограничение количества элементов, которые проверяются для кортежей, битовых строк, карт, списков и любых других коллекций элементов, за исключением печатных строк и печатных символьных списков (charlists), которые используют опцию :printable_limit. Если вы не хотите ограничивать количество элементов конкретным числом, используйте :infinity. Принимает положительное целое число или :infinity. По умолчанию 50.

  • :pretty - если установлено в true, включает красивое форматирование. По умолчанию false.

  • :printable_limit - ограничение количества символов, которые проверяются в печатных строках и печатных символьных списках (charlists). Вы можете использовать String.printable?/1 и List.ascii_printable?/1 для проверки, является ли данная строка или символьный список (charlist) печатной. Если вы не хотите ограничивать количество символов конкретным числом, используйте :infinity. Принимает положительное целое число или :infinity. По умолчанию 4096.

  • :safe - при false, ошибки при проверке структур будут генерироваться как ошибки, а не быть обернутыми в исключение Inspect.Error. Это полезно при отладке ошибок и сбоев для пользовательских реализаций inspect. По умолчанию true.

  • :structs - при false, структуры не форматируются протоколом inspect, а вместо этого выводятся как карты. По умолчанию true.

  • :syntax_colors - при установке в список ключевых слов цветов вывод будет цветным. Ключи — типы, значения — цвета для каждого типа (например, [number: :red, atom: :blue]). Типы могут включать :atom, :binary, :boolean, :list, :map, :number, :regex, :string, :tuple, или некоторые типы для представления AST, такие как :variable, :call, и :operator. Пользовательские типы данных могут предоставлять свои собственные опции. Цвета могут быть любыми значениями IO.ANSI.ansidata/0, поддерживаемыми IO.ANSI.format/1. Список стандартных цветов можно получить из IO.ANSI.syntax_colors/0.

  • :width - количество символов на строке, используемое при красивом форматировании (%PRETTY%) или при выводе в устройства ввода/вывода. Установите значение 0 для принудительного вывода каждого элемента на отдельной строке. Если вы не хотите ограничивать количество элементов конкретным числом, используйте :infinity. По умолчанию 80.

Краткое описание

Типы

color_key()
t()

Функции

default_inspect_fun()

Возвращает функцию по умолчанию для inspect.

default_inspect_fun(fun)

Устанавливает функцию по умолчанию для inspect.

new(opts)

Создает структуру Inspect.Opts.

Типы

color_key()Source

@type color_key() :: atom()

t()Source

@type t() :: %Inspect.Opts{
  base: :decimal | :binary | :hex | :octal,
  binaries: :infer | :as_binaries | :as_strings,
  char_lists: term(),
  charlists: :infer | :as_lists | :as_charlists,
  custom_options: keyword(),
  inspect_fun: (any(), t() -> Inspect.Algebra.t()),
  limit: non_neg_integer() | :infinity,
  pretty: boolean(),
  printable_limit: non_neg_integer() | :infinity,
  safe: boolean(),
  structs: boolean(),
  syntax_colors: [{color_key(), IO.ANSI.ansidata()}],
  width: non_neg_integer() | :infinity
}

Функции

default_inspect_fun()Source

@spec default_inspect_fun() :: (term(), t() -> Inspect.Algebra.t())

Возвращает функцию по умолчанию для inspect.

default_inspect_fun(fun)Source

@spec default_inspect_fun((term(), t() -> Inspect.Algebra.t())) :: :ok

Устанавливает функцию по умолчанию для inspect.

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

Библиотекам крайне не рекомендуется устанавливать свои собственные функции, так как это должно контролироваться приложениями. Библиотеки должны вместо этого определять свои собственные структуры с пользовательскими реализациями inspect. Если библиотеке необходимо изменить функцию inspect по умолчанию, лучше всего попросить пользователей вашей библиотеки явно вызвать default_inspect_fun/1 со своей функцией.

По умолчанию Inspect.inspect/2.

Примеры

previous_fun = Inspect.Opts.default_inspect_fun()

Inspect.Opts.default_inspect_fun(fn
  %{address: _} = map, opts ->
    previous_fun.(%{map | address: "[REDACTED]"}, opts)

  value, opts ->
    previous_fun.(value, opts)
end)

new(opts)Source

@spec new(keyword()) :: t()

Создает структуру Inspect.Opts.

Скачать версию ePub

Создано с помощью ExDoc (v0.34.1) для языка программирования Elixir

© 2012-2024 The Elixir Team
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.17.2/Inspect.Opts.html

Spec-Zone.ru

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