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.
Краткое описание
Типы
Функции
- 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.
© 2012-2024 The Elixir Team
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.17.2/Inspect.Opts.html