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 \\ [])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
