**Некоторые правила написания YAML-файлов**: - Файл должен начинаться с 3 дефисов — «---», а заканчиваться 3 точками — «…» - Первый блок (словарь или список) задаёт рабочее количество отступов, которое будет использовано во всём документе. - После знака «-», обозначающего элемент списка, ставится пробел.  - Все именованные наборы данных и строки должны иметь уникальные названия.  - В качестве отступов используются пробелы, табуляции не допускаются. - Строки можно не брать в кавычки, за исключением случая, когда прописываются конвейеры команд в Linux. - Комментарии начинаются с символа # и отделяются от других токенов пробелами. **Основная часть данных в YAML представлена в форме пар «ключ-значение»**, где ключ представляет имя, а значение — соответствующие данные. ## Синтаксис YAML В синтаксисе **YAML** _значительным является интервал_. Каждый **отступ с двумя пробелами** представляет новый уровень: ```sh level1: level2: Level3: ``` Каждый новый уровень - _это объект_. В этом примере объект **level1** содержит объект **level2**, который содержит объект **level3**. ### Поддержка мультидокументов Вы можете объединить несколько YAML-документов в один YAML-файл для облегчения организации файлов и парсинга данных. Документы разделяются тремя дефисами (—): ``` --- player: playerOne action: attack (miss) --- player: playerTwo action: attack (hit) --- ``` ### Поддержка комментариев YAML позволяет добавлять комментарии после символа #, как в Python: ``` key: #Это однострочный комментарий - value line 5 #Это #многострочный комментарий - value line 13 ``` ### Легко читаемый синтаксис В синтаксисе YAML-файлов используется система отступов, как в Python. Необходимо использовать пробелы, а не табуляцию, чтобы избежать путаницы. Это избавляет от лишних символов, которые есть в JSON и XML (кавычки, скобки, фигурные скобки). В итоге читаемость файла значительно повышается. ### YAML ``` #YAML Imaro: author: Charles R. Saunders language: English publication-year: 1981 pages: 224 ``` ### Явная и неявная типизация YAML предлагает как автоопределение типов, так и возможность явно указать тип данных. Чтобы использовать конкретный тип, нужно написать `!![тип]` перед значением. ``` # Это значение преобразуется в int: is-an-int: !!int 14.10 # Превращает любое значение в строку: is-a-str: !!str 67.43 # Значение должно быть boolean: is-a-bool: !!bool yes ```