2018-12-11 22:48:06 +00:00
|
|
|
|
---
|
2018-12-12 22:30:16 +00:00
|
|
|
|
filename: learnyaml-ru.yaml
|
2018-12-11 22:48:06 +00:00
|
|
|
|
contributors:
|
2020-02-13 00:08:29 +00:00
|
|
|
|
- [Leigh Brenecki, 'https://github.com/adambrenecki']
|
2018-12-12 22:30:16 +00:00
|
|
|
|
- [Suhas SG, 'https://github.com/jargnar']
|
|
|
|
|
translators:
|
2018-12-11 22:48:06 +00:00
|
|
|
|
- [Sergei Babin, 'https://github.com/serzn1']
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
YAML как язык сериализации данных предназначен прежде всего для использования людьми.
|
|
|
|
|
|
2018-12-12 22:30:16 +00:00
|
|
|
|
Это строгое надмножество JSON с добавлением синтаксически значимых переносов строк и
|
2022-06-15 09:17:20 +00:00
|
|
|
|
отступов как в Python. Тем не менее в отличие от Python, YAML запрещает
|
2018-12-11 22:48:06 +00:00
|
|
|
|
использование табов для отступов.
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
--- # начало документа
|
|
|
|
|
|
2018-12-12 22:30:16 +00:00
|
|
|
|
# Комментарий в YAML выглядит как-то так.
|
2018-12-11 22:48:06 +00:00
|
|
|
|
|
|
|
|
|
######################
|
|
|
|
|
# Скалярные величины #
|
|
|
|
|
######################
|
|
|
|
|
|
2019-11-24 06:26:14 +00:00
|
|
|
|
# Наш корневой объект (который продолжается до конца документа) будет соответствовать
|
2018-12-11 22:48:06 +00:00
|
|
|
|
# типу map, который в свою очередь соответствует словарю, хешу или объекту в других языках.
|
|
|
|
|
key: value
|
|
|
|
|
another_key: Другое значение ключа.
|
|
|
|
|
a_number_value: 100
|
|
|
|
|
scientific_notation: 1e+12
|
2018-12-12 22:30:16 +00:00
|
|
|
|
# Число 1 будет интерпретировано как число, а не как логический тип. Если необходимо чтобы
|
2018-12-11 22:48:06 +00:00
|
|
|
|
# значение было интерпретировано как логическое, необходимо использовать true
|
|
|
|
|
boolean: true
|
|
|
|
|
null_value: null
|
|
|
|
|
key with spaces: value
|
|
|
|
|
|
|
|
|
|
# Обратите внимание что строки используются без кавычек, но могут и с кавычками.
|
|
|
|
|
however: 'Строка заключенная в кавычки.'
|
|
|
|
|
'Ключ заключенный в кавычки.': "Полезно если нужно использовать ':' в вашем ключе."
|
|
|
|
|
single quotes: 'Содержит ''одну'' экранированную строку'
|
|
|
|
|
double quotes: "Содержит несколько: \", \0, \t, \u263A, \x0d\x0a == \r\n, экранированных строк."
|
|
|
|
|
|
|
|
|
|
# Многострочные строковые значения могут быть записаны как 'строковый блок' (используя |),
|
|
|
|
|
# или как 'сложенный блок' (используя '>').
|
|
|
|
|
literal_block: |
|
|
|
|
|
Значение всего текста в этом блоке будет присвоено ключу 'literal_block',
|
|
|
|
|
с сохранением переноса строк.
|
|
|
|
|
|
|
|
|
|
Объявление продолжается до удаления отступа и выравнивания с ведущим отступом.
|
|
|
|
|
|
|
|
|
|
Любые строки с большим отступом сохраняют остатки своего отступа -
|
|
|
|
|
эта строка будет содержать дополнительно 4 пробела.
|
|
|
|
|
folded_style: >
|
2022-06-15 09:17:20 +00:00
|
|
|
|
Весь блок этого текста будет значением 'folded_style', но в данном случае
|
2018-12-11 22:48:06 +00:00
|
|
|
|
все символы новой строки будут заменены пробелами.
|
|
|
|
|
|
|
|
|
|
Пустые строки будут преобразованы в перенос строки.
|
|
|
|
|
|
|
|
|
|
Строки с дополнительными отступами сохраняют их переносы строк -
|
|
|
|
|
этот текст появится через 2 строки.
|
|
|
|
|
|
|
|
|
|
##################
|
|
|
|
|
# Типы коллекций #
|
|
|
|
|
##################
|
|
|
|
|
|
|
|
|
|
# Вложения используют отступы. Отступ в 2 пробела предпочтителен (но не обязателен).
|
|
|
|
|
a_nested_map:
|
|
|
|
|
key: value
|
|
|
|
|
another_key: Another Value
|
|
|
|
|
another_nested_map:
|
|
|
|
|
hello: hello
|
|
|
|
|
|
|
|
|
|
# В словарях (maps) используются не только строковые значения ключей.
|
|
|
|
|
0.25: a float key
|
|
|
|
|
|
|
|
|
|
# Ключи также могут быть сложными, например многострочными.
|
2022-06-15 09:17:20 +00:00
|
|
|
|
# Мы используем ? с последующим пробелом, чтобы обозначить начало сложного ключа.
|
2018-12-11 22:48:06 +00:00
|
|
|
|
? |
|
|
|
|
|
Этот ключ
|
|
|
|
|
который содержит несколько строк
|
|
|
|
|
: и это его значение
|
|
|
|
|
|
|
|
|
|
# YAML также разрешает соответствия между последовательностями со сложными ключами
|
|
|
|
|
# Некоторые парсеры могут выдать предупреждения или ошибку
|
|
|
|
|
# Пример
|
|
|
|
|
? - Manchester United
|
|
|
|
|
- Real Madrid
|
|
|
|
|
: [2001-01-01, 2002-02-02]
|
|
|
|
|
|
|
|
|
|
# Последовательности (эквивалент списка или массива) выглядят как-то так
|
|
|
|
|
# (обратите внимание что знак '-' считается отступом):
|
|
|
|
|
a_sequence:
|
|
|
|
|
- Item 1
|
|
|
|
|
- Item 2
|
|
|
|
|
- 0.5 # последовательности могут содержать различные типы.
|
|
|
|
|
- Item 4
|
|
|
|
|
- key: value
|
|
|
|
|
another_key: another_value
|
|
|
|
|
-
|
2018-12-12 22:30:16 +00:00
|
|
|
|
- Это последовательность
|
2018-12-11 22:48:06 +00:00
|
|
|
|
- внутри другой последовательности
|
|
|
|
|
- - - Объявления вложенных последовательностей
|
|
|
|
|
- могут быть сжаты
|
|
|
|
|
|
|
|
|
|
# Поскольку YAML это надмножество JSON, вы можете использовать JSON-подобный
|
|
|
|
|
# синтаксис для словарей и последовательностей:
|
|
|
|
|
json_map: {"key": "value"}
|
|
|
|
|
json_seq: [3, 2, 1, "takeoff"]
|
|
|
|
|
в данном случае кавычки не обязательны: {key: [3, 2, 1, takeoff]}
|
|
|
|
|
|
2018-12-12 22:30:16 +00:00
|
|
|
|
##########################
|
|
|
|
|
# Дополнительные функции #
|
|
|
|
|
##########################
|
2018-12-11 22:48:06 +00:00
|
|
|
|
|
|
|
|
|
# В YAML есть удобная система так называемых 'якорей' (anchors), которые позволяют легко
|
|
|
|
|
# дублировать содержимое внутри документа. Оба ключа в примере будут иметь одинаковые значения:
|
|
|
|
|
anchored_content: &anchor_name Эта строка будет являться значением обоих ключей.
|
|
|
|
|
other_anchor: *anchor_name
|
|
|
|
|
|
|
|
|
|
# Якоря могут использоваться для дублирования/наследования свойств
|
|
|
|
|
base: &base
|
|
|
|
|
name: Каждый будет иметь одинаковое имя
|
|
|
|
|
|
2018-12-12 22:30:16 +00:00
|
|
|
|
# Регулярное выражение << называется ключом объединения независимо от типа языка.
|
2022-06-15 09:17:20 +00:00
|
|
|
|
# Он используется, чтобы показать что все ключи одного или более словарей должны быть
|
2018-12-11 22:48:06 +00:00
|
|
|
|
# добавлены в текущий словарь.
|
|
|
|
|
|
|
|
|
|
foo: &foo
|
|
|
|
|
<<: *base
|
|
|
|
|
age: 10
|
|
|
|
|
|
|
|
|
|
bar: &bar
|
|
|
|
|
<<: *base
|
|
|
|
|
age: 20
|
|
|
|
|
|
|
|
|
|
# foo и bar могли бы иметь имена: Каждый из них имеет аналогичное имя
|
|
|
|
|
|
|
|
|
|
# В YAML есть теги (tags), которые используются для явного объявления типов.
|
|
|
|
|
explicit_string: !!str 0.5
|
|
|
|
|
# В некоторых парсерах реализованы теги для конкретного языка, пример для Python
|
|
|
|
|
# пример сложного числового типа.
|
|
|
|
|
python_complex_number: !!python/complex 1+2j
|
|
|
|
|
|
|
|
|
|
# Мы можем использовать сложные ключи с включенными в них тегами из определенного языка
|
|
|
|
|
? !!python/tuple [5, 7]
|
|
|
|
|
: Fifty Seven
|
|
|
|
|
# Могло бы быть {(5, 7): 'Fifty Seven'} в Python
|
|
|
|
|
|
2018-12-12 22:30:16 +00:00
|
|
|
|
#######################
|
|
|
|
|
# Дополнительные типы #
|
|
|
|
|
#######################
|
2018-12-11 22:48:06 +00:00
|
|
|
|
|
2018-12-12 22:30:16 +00:00
|
|
|
|
# Строки и числа не единственные величины которые может понять YAML.
|
2018-12-11 22:48:06 +00:00
|
|
|
|
# YAML также поддерживает даты и время в формате ISO.
|
|
|
|
|
datetime: 2001-12-15T02:59:43.1Z
|
|
|
|
|
datetime_with_spaces: 2001-12-14 21:59:43.10 -5
|
|
|
|
|
date: 2002-12-14
|
|
|
|
|
|
|
|
|
|
# Тег !!binary показывает что эта строка является base64-закодированным
|
|
|
|
|
# представлением двоичного объекта.
|
|
|
|
|
gif_file: !!binary |
|
|
|
|
|
R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5
|
|
|
|
|
OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+
|
|
|
|
|
+f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC
|
|
|
|
|
AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=
|
|
|
|
|
|
|
|
|
|
# YAML может использовать объекты типа ассоциативных массивов (set), как представлено ниже:
|
|
|
|
|
set:
|
|
|
|
|
? item1
|
|
|
|
|
? item2
|
|
|
|
|
? item3
|
|
|
|
|
or: {item1, item2, item3}
|
|
|
|
|
|
|
|
|
|
# Сеты (set) являются простыми эквивалентами словарей со значениями
|
|
|
|
|
# типа null; запись выше эквивалентна следующей:
|
|
|
|
|
set2:
|
|
|
|
|
item1: null
|
|
|
|
|
item2: null
|
|
|
|
|
item3: null
|
|
|
|
|
|
|
|
|
|
... # конец документа
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Больше информации
|
|
|
|
|
|
2022-06-15 09:17:20 +00:00
|
|
|
|
+ [YAML официальный вебсайт](http://yaml.org/)
|
2018-12-11 22:48:06 +00:00
|
|
|
|
+ [YAML онлайн валидатор](http://www.yamllint.com/)
|