檢視原始碼 Inspect.Opts (Elixir v1.16.2)

定義 Inspect 協定的選項。

下列欄位可用

  • :base - 以 :binary:octal:decimal:hex 列印整數和二進位。預設為 :decimal

  • :binaries - 當 :as_binaries 時,所有二進位會以位元語法列印。

    :as_strings 時,所有二進位會以字串列印,不可列印的位元組會以跳脫字元表示。

    當預設為 :infer 時,如果 :base:decimal 且為可列印,則二進位會以字串列印,否則以位元語法列印。請參閱 String.printable?/1 以了解何時字串為可列印。

  • :charlists - 當 :as_charlists 時,所有清單會以字元清單列印,不可列印的元素會以跳脫字元表示。

    :as_lists 時,所有清單會以清單列印。

    當預設為 :infer 時,如果清單為可列印,則會以字元清單列印,否則以清單列印。請參閱 List.ascii_printable?/1 以了解何時字元清單為可列印。

  • :custom_options (自 v1.9.0 起) - 儲存自訂使用者定義選項的關鍵字清單。在為巢狀結構實作 Inspect 協定時,用於傳遞自訂選項很有用。

    它支援一些預先定義的鍵

    • :sort_maps (自 v1.14.4 起) - 如果設為 true,會對映射中的鍵值對排序。這有助於讓映射檢查在測試中確定,因為映射鍵順序是隨機的。
  • :inspect_fun (自 v1.9.0 起) - 建立代數文件的功能。預設為 Inspect.Opts.default_inspect_fun/0

  • :limit - 限制檢查項目數量的元組、位元串、映射、清單和任何其他項目集合,但可列印字串和可列印字元清單除外,它們使用 :printable_limit 選項。如果您不想將項目數量限制為特定數字,請使用 :infinity。它接受正整數或 :infinity。預設為 50

  • :pretty - 如果設定為 true,將啟用漂亮列印。預設為 false

  • :printable_limit - 限制檢查可列印字串和可列印字元清單的字元數量。您可以使用 String.printable?/1List.ascii_printable?/1 檢查指定的字串或字元清單是否可列印。如果您不想將字元數量限制為特定數字,請使用 :infinity。它接受正整數或 :infinity。預設為 4096

  • :safe - 當 false 時,檢查結構時發生的失敗將會以錯誤的形式提出,而不是包裝在 Inspect.Error 例外中。這在除錯自訂檢查實作的失敗和崩潰時很有用。預設為 true

  • :structs - 當 false 時,結構不會由檢查協定格式化,而是以映射列印。預設為 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 為 true 或列印至 IO 裝置時,每行使用的字元數。設定為 0 以強制在自己的行上列印每個項目。如果你不想將項目的數量限制在特定數字,請使用 :infinity。預設為 80

摘要

函式

傳回預設檢查函式。

設定預設檢查函式。

建立 Inspect.Opts 結構。

類型

@type color_key() :: atom()
@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()

檢視原始碼 (自 1.13.0 起)
@spec default_inspect_fun() :: (term(), t() -> Inspect.Algebra.t())

傳回預設檢查函式。

連結至此函式

default_inspect_fun(fun)

檢視原始碼 (自 1.13.0 起)
@spec default_inspect_fun((term(), t() -> Inspect.Algebra.t())) :: :ok

設定預設檢查函式。

小心設定此選項,因為它會改變系統中所有值的檢查方式。此功能的主要用途是提供一個進入點來篩選已檢查的值,以便實體符合資料安全和資料隱私方面的規則和法規。

強烈不建議函式庫設定自己的函式,因為這必須由應用程式控制。函式庫應改為定義自己的結構,並使用自訂檢查實作。如果函式庫必須變更預設檢查函式,那麼最好要求函式庫的使用者明確呼叫 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)

檢視原始碼 (自 1.13.0 起)
@spec new(keyword()) :: t()

建立 Inspect.Opts 結構。