# Использование YAML

Для составления конфигурации `jroboplc` используется формат YAML.

Внимание! В YAML отступы имеют значение. Для отступов используется пробел. TAB'ы использовать запрещено.
https://www.youtube.com/watch?v=AXLoRpKnK8U

## Основные сведения о YAML

https://yaml.org/start.html

## Инструменты для работы с YAML

http://yaml-online-parser.appspot.com/

## Группировка

Довольно часто может потребоваться описать несколько наборов параметров с небольшими, либо отсутствующими различиями, например:

    module.ser:
      - portnum:   1
        sysname:   /dev/ttyMXUSB0
        baud:      9600
        databits:  8
        parity:    0
        stopbits:  1
        timeout:   200

      - portnum:   2
        sysname:   /dev/ttyMXUSB1
        baud:      9600
        databits:  8
        parity:    0
        stopbits:  1
        timeout:   200

Как видно, отличия лишь в двух параметрах - `portnum` и `sysname`. В следующем примере мы вынесем общие параметры в отдельную группу:

    group: &group
        baud:      9600
        databits:  8
        parity:    0
        stopbits:  1
        timeout:   200

    module.ser:
      - portnum:   1
        sysname:   /dev/ttyMXUSB0
        <<:        *group

      - portnum:   2
        sysname:   /dev/ttyMXUSB1
        <<:        *group

Теперь, если потребуется изменить параметр `baud` сразу всем, достаточно будет изменить его в группе. В тоже время параметры можно указывать явно, чтобы перекрыть значение, установленное в группе, например:

    group: &group
        baud:      9600
        databits:  8
        parity:    0
        stopbits:  1
        timeout:   200

    module.ser:
      - portnum:   1
        sysname:   /dev/ttyMXUSB0
        <<:        *group

      - portnum:   2
        sysname:   /dev/ttyMXUSB1
        baud:      115200
        <<:        *group

Группа обязательно должна располагаться выше места ее использования.