当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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 \\ [])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。