# yarner-block-links
[![Test status](https://github.com/mlange-42/yarner-block-links/actions/workflows/tests.yml/badge.svg)](https://github.com/mlange-42/yarner-block-links/actions/workflows/tests.yml)
[![GitHub](https://img.shields.io/badge/github-repo-blue?logo=github)](https://github.com/mlange-42/yarner-block-links)
[![Crate](https://img.shields.io/crates/v/yarner-block-links.svg)](https://crates.io/crates/yarner-block-links)
[![MIT license](https://img.shields.io/github/license/mlange-42/yarner-block-links)](https://github.com/mlange-42/yarner-block-links/blob/main/LICENSE)
A [Yarner](https://github.com/mlange-42/yarner) plugin that adds to each code block a list of links to all referenced and all referencing blocks.
Example:
A list of links is placed under each code block that references other blocks:
```rust
//- Main block
fn main() {
// ==> Block A.
// ==> Block B.
}
```
> Macros: [`Block A`](#yarner-block-block-a) [`Block B`](#yarner-block-block-b)
Blocks that are referenced by other blocks get a list of usages added.
The first referenced block:
```rust
//- Block A
print!("Hello");
```
> Usage: [`Main block`](#yarner-block-main-block)
The second referenced block:
```rust
//- Block B
println!(" World!");
```
> Usage: [`Main block`](#yarner-block-main-block)
|
## Installation
**Binaries**
1. Download the [latest binaries](https://github.com/mlange-42/yarner-block-links/releases) for your platform
2. Unzip somewhere
3. Add the parent directory of the executable to your `PATH` environmental variable
**Using `cargo`**
```
> cargo install yarner-block-links
```
## Usage
Add a section `plugin.block-links` to your `Yarner.toml`:
```toml
[plugin.block-links]
```
## Options
The plugin provides optional configuration for link formatting. Defaults are as follows (but all options can be left out):
```toml
[plugin.block-links]
template = "{{#if usage}}> Usage: {{usage}} \n{{/if}}{{#if macros}}> Macros: {{macros}}{{/if}}"
join = " "
label = "`{{label}}`"
```
| Option | Details |
|------------|-------------------------------------------------|
| `template` | Template for formatting of the links section(s) |
| `join` | Separator between links |
| `label` | Formatting of link labels |