SnakeBridge.Generator (SnakeBridge v0.15.0)

Copy Markdown View Source

Generates Elixir source files from introspection data.

Summary

Functions

build_params(params, info \\ %{})

@spec build_params(list(), map()) :: %{
  required: [map()],
  optional_positional: [map()],
  has_args: boolean(),
  has_varargs: boolean(),
  has_opts: boolean(),
  is_variadic: boolean(),
  required_keyword_only: [map()],
  optional_keyword_only: [map()],
  has_var_keyword: boolean()
}

format_docstring(raw_doc, params \\ [], return_type \\ nil)

@spec format_docstring(String.t() | map() | nil, list(), map() | nil) :: String.t()

generate_library(library, functions, classes, config, module_docs \\ %{}, lock_data \\ nil)

@spec generate_library(
  SnakeBridge.Config.Library.t(),
  list(),
  list(),
  SnakeBridge.Config.t(),
  map(),
  map() | nil
) :: :ok

normalize_docstring(doc)

@spec normalize_docstring(String.t() | map() | nil) :: String.t()

Normalize a docstring to a string, handling both raw strings and parsed docstring maps.

render_library(library, functions, classes, opts \\ [])

@spec render_library(SnakeBridge.Config.Library.t(), list(), list(), keyword()) ::
  String.t()

write_if_changed(path, new_content)

@spec write_if_changed(String.t(), String.t()) :: :written | :unchanged