Elixir語言中 Code.quoted_to_algebra
相關用法介紹如下。
用法:
quoted_to_algebra(quoted, opts \\ [])
(從 1.13.0 開始)
@spec quoted_to_algebra(
Macro.t(),
keyword()
) :: Inspect.Algebra.t()
使用 Elixir 的格式化規則將引用的表達式轉換為代數文檔。
代數文檔可以通過調用轉換為字符串:
doc
|> Inspect.Algebra.format(:infinity)
|> IO.iodata_to_binary()
有關執行相同操作的高級函數,請參閱
。Macro.to_string/1
格式化注意事項
Elixir AST 不包含字符串、列表或具有兩個元素的元組等文字的元數據,這意味著生成的代數文檔不會尊重所有用戶偏好,並且可能會放錯注釋。為了獲得更好的結果,您可以使用
的 string_to_quoted/2
:token_metadata
、 :unescape
和 :literal_encoder
選項為格式化程序提供額外的信息:
[
literal_encoder: &{:ok, {:__block__, &2, [&1]}},
token_metadata: true,
unescape: false
]
這將生成一個 AST,其中包含諸如 do
塊開始和結束行或符號定界符之類的信息,並且通過將文字包裝在塊中,它們現在可以保存元數據,例如行號、字符串定界符和轉義序列或整數格式(例如 0x2a
而不是 47
)。但是,請注意此 AST 無效。如果您評估它,由於:unescape
和:literal_encoder
選項,它不會具有與常規 Elixir AST 相同的語義。但是,如果您正在執行源代碼操作,這些選項很有用,其中保留用戶選擇和評論放置很重要。
選項
-
:comments
- 與引用的表達式相關的注釋列表。默認為[]
。建議將:token_metadata
和:literal_encoder
選項都提供給string_to_quoted_with_comments/2
-
:escape
- 當true
時,像\n
這樣的轉義序列將轉義到\\n
中。如果在使用string_to_quoted/2
:unescape
選項設置為false
,則將此選項設置為false
將防止它兩次轉義序列。默認為true
。 -
:locals_without_parens
- 名稱和數量對的關鍵字列表,應盡可能保持不帶括號。元數可能是原子:*
,這意味著該名稱的所有元數。格式化程序已經包含一個函數列表,這個選項擴充了這個列表。
相關用法
- Elixir Code.prepend_path用法及代碼示例
- Elixir Code.compiler_options用法及代碼示例
- Elixir Code.put_compiler_option用法及代碼示例
- Elixir Code.ensure_compiled用法及代碼示例
- Elixir Code.format_string!用法及代碼示例
- Elixir Code.required_files用法及代碼示例
- Elixir Code.get_compiler_option用法及代碼示例
- Elixir Code.Fragment.cursor_context用法及代碼示例
- Elixir Code.available_compiler_options用法及代碼示例
- Elixir Code.ensure_loaded?用法及代碼示例
- Elixir Code.eval_quoted用法及代碼示例
- Elixir Code.require_file用法及代碼示例
- Elixir Code.Fragment.container_cursor_to_quoted用法及代碼示例
- Elixir Code.Fragment.surround_context用法及代碼示例
- Elixir Code.delete_path用法及代碼示例
- Elixir Code.append_path用法及代碼示例
- Elixir Code.ensure_loaded用法及代碼示例
- Elixir Code.unrequire_files用法及代碼示例
- Elixir Code.fetch_docs用法及代碼示例
- Elixir Code.string_to_quoted_with_comments用法及代碼示例
- Elixir Code.eval_string用法及代碼示例
- Elixir Code用法及代碼示例
- Elixir Config.config_env用法及代碼示例
- Elixir Config.config用法及代碼示例
- Elixir Config.Reader用法及代碼示例
注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Code.quoted_to_algebra(quoted, opts \\ [])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。