檢視原始碼 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?/1
和List.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
。
摘要
類型
@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 }
函式
@spec default_inspect_fun() :: (term(), t() -> Inspect.Algebra.t())
傳回預設檢查函式。
@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)
建立 Inspect.Opts
結構。