當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Elixir Code.quoted_to_algebra用法及代碼示例


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-lang.org大神的英文原創作品 Code.quoted_to_algebra(quoted, opts \\ [])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。