Nasty.Interop.CodeGen.Explain (Nasty v0.3.0)
View SourceGenerates natural language explanations from Elixir code AST.
This module traverses Elixir AST and generates natural language descriptions, creating the reverse direction of code generation (Code → NL).
Supported Patterns
Function Calls
Enum.sort(list)→ "Sort the list"Enum.filter(users, fn u -> u.age > 18 end)→ "Filter users where age is greater than 18"
Pipelines
list |> Enum.map(&(&1 * 2)) |> Enum.sum()→ "Map the list to double each element, then sum the results"
Assignments
x = 5→ "X is 5"result = a + b→ "Result equals A plus B"
Conditionals
if x > 5, do: :ok→ "If X is greater than 5, return ok"
Examples
# Function call → Natural language
code = "Enum.sort(numbers)"
{:ok, text} = Explain.explain_code(code)
# => "Sort numbers"
# Pipeline → Natural language
code = "list |> Enum.map(&(&1 * 2)) |> Enum.sum()"
{:ok, text} = Explain.explain_code(code)
# => "Map list to double each element, then sum the results"
Summary
Functions
Explains Elixir AST and returns a natural language AST Document.
Explains Elixir code by converting it to natural language.
Functions
@spec explain_ast_to_document( Macro.t(), keyword() ) :: {:ok, Nasty.AST.Document.t()} | {:error, term()}
Explains Elixir AST and returns a natural language AST Document.
Examples
ast = quote do: Enum.sort(list)
{:ok, document} = Explain.explain_ast_to_document(ast)
Explains Elixir code by converting it to natural language.
Parameters
code- Elixir code string or ASTopts- Options::language- Target language (default: :en):style- Explanation style::conciseor:verbose(default: :concise)
Returns
{:ok, String.t()}- Natural language explanation{:error, reason}- Parse or generation error
Examples
{:ok, explanation} = Explain.explain_code("Enum.sort(list)")
# => "Sort list"
{:ok, explanation} = Explain.explain_code("x = 5")
# => "X is 5"