# `SnakeBridge.Docs`
[🔗](https://github.com/nshkrdotcom/snakebridge/blob/v0.16.0/lib/snakebridge/docs.ex#L1)

On-demand documentation fetching with optional caching.

# `get`

```elixir
@spec get(module(), atom() | String.t()) :: String.t()
```

# `groups_for_modules`

```elixir
@spec groups_for_modules(keyword()) :: [{String.t(), [module()]}]
```

Builds an ExDoc `groups_for_modules` keyword list using the SnakeBridge manifest.

This keeps HexDocs navigation aligned with Python package paths, while
remaining purely an Elixir configuration concern.

## Options

- `:config` - `SnakeBridge.Config` struct (defaults to `SnakeBridge.Config.load/0`)
- `:manifest` - manifest map (defaults to `SnakeBridge.Manifest.load/1`)
- `:depth` - group depth beyond the library root (`:full` or non-negative integer, default: 1)
- `:libraries` - list of library names to include (atoms or strings)
- `:include_functions` - include module functions (default: true)
- `:include_classes` - include class modules (default: true)

# `nest_modules_by_prefix`

```elixir
@spec nest_modules_by_prefix(keyword()) :: [module()]
```

Builds an ExDoc `nest_modules_by_prefix` list using the SnakeBridge manifest.

This keeps the navigation tree aligned with generated Python packages.

## Options

- `:config` - `SnakeBridge.Config` struct (defaults to `SnakeBridge.Config.load/0`)
- `:manifest` - manifest map (defaults to `SnakeBridge.Manifest.load/1`)
- `:libraries` - list of library names to include (atoms or strings)

# `search`

```elixir
@spec search(module(), String.t()) :: list()
```

---

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