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