---
# System prepended metadata

title: Crossing Example (Mermaid)

---

# Crossing Example (Mermaid)

Без discriminator. В квадратных скобках - имена слотов.

| Input | Output |
| --- | --- |
| s1 | s3 |
| s2 | s3 |


``` mermaid
graph LR
    s1[[1]]
    s2[[2]]
    s3[[2]]
    s1 --> s3
    s2 --> s3
```

С discriminator.

| Input | In. Disc | Output | Out disc. |
| --- | --- | --- | --- |
| s1 | input disc1 | s3 | output disc1 |
| s2 | input disc2 | s3 | output disc2 |


``` mermaid
graph LR
    s1_s:::hidden
    s2_s:::hidden
    s1[[1]]
    s2[[2]]
    s3[[2]]
    s1_s -- input disc1 --> s1  
    s2_s -- input disc2 --> s2
    s1 -- output disc1 --> s3
    s2 -- output disc2 --> s3
```

## Алгоритм

1. Индекс - порядковый номер записи с `name` в connections.
2. Проходим по connections, собираем `input` и `output` и генерируем записи `s<index>[[<slot name>]]`
4. Для всех записей с input discriminator генерируем строчки `s<input index>_s::hidden` и `s<input index>_s -- <discriminator> --> s<input index>`
5. Для всех записей:

    1. Если не задан input discriminator - генерируем `s<input index> --> s<output_index>`
    2. В противном случае `s<input index> -- <output discriminator> --> s<output index>`