# `SnakeBridge.Generator`
[🔗](https://github.com/nshkrdotcom/snakebridge/blob/v0.14.0/lib/snakebridge/generator.ex#L1)

Generates Elixir source files from introspection data.

# `build_params`
[🔗](https://github.com/nshkrdotcom/snakebridge/blob/v0.14.0/lib/snakebridge/generator.ex#L1121)

```elixir
@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`
[🔗](https://github.com/nshkrdotcom/snakebridge/blob/v0.14.0/lib/snakebridge/generator.ex#L1020)

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

# `generate_library`
[🔗](https://github.com/nshkrdotcom/snakebridge/blob/v0.14.0/lib/snakebridge/generator.ex#L106)

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

# `normalize_docstring`
[🔗](https://github.com/nshkrdotcom/snakebridge/blob/v0.14.0/lib/snakebridge/generator.ex#L1002)

```elixir
@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`
[🔗](https://github.com/nshkrdotcom/snakebridge/blob/v0.14.0/lib/snakebridge/generator.ex#L21)

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

# `write_if_changed`
[🔗](https://github.com/nshkrdotcom/snakebridge/blob/v0.14.0/lib/snakebridge/generator.ex#L645)

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

---

*Consult [api-reference.md](api-reference.md) for complete listing*
