learnxinyminutes-docs/ru/yaml.md
2024-12-08 23:20:53 -07:00

188 lines
9.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
filename: learnyaml-ru.yaml
contributors:
- [Leigh Brenecki, 'https://github.com/adambrenecki']
- [Suhas SG, 'https://github.com/jargnar']
translators:
- [Sergei Babin, 'https://github.com/serzn1']
---
YAML как язык сериализации данных предназначен прежде всего для использования людьми.
Это строгое надмножество JSON с добавлением синтаксически значимых переносов строк и
отступов как в Python. Тем не менее в отличие от Python, YAML запрещает
использование табов для отступов.
```yaml
--- # начало документа
# Комментарий в YAML выглядит как-то так.
######################
# Скалярные величины #
######################
# Наш корневой объект (который продолжается до конца документа) будет соответствовать
# типу map, который в свою очередь соответствует словарю, хешу или объекту в других языках.
key: value
another_key: Другое значение ключа.
a_number_value: 100
scientific_notation: 1e+12
# Число 1 будет интерпретировано как число, а не как логический тип. Если необходимо чтобы
# значение было интерпретировано как логическое, необходимо использовать 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: >
Весь блок этого текста будет значением 'folded_style', но в данном случае
все символы новой строки будут заменены пробелами.
Пустые строки будут преобразованы в перенос строки.
Строки с дополнительными отступами сохраняют их переносы строк -
этот текст появится через 2 строки.
##################
# Типы коллекций #
##################
# Вложения используют отступы. Отступ в 2 пробела предпочтителен (но не обязателен).
a_nested_map:
key: value
another_key: Another Value
another_nested_map:
hello: hello
# В словарях (maps) используются не только строковые значения ключей.
0.25: a float key
# Ключи также могут быть сложными, например многострочными.
# Мы используем ? с последующим пробелом, чтобы обозначить начало сложного ключа.
? |
Этот ключ
который содержит несколько строк
: и это его значение
# 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
-
- Это последовательность
- внутри другой последовательности
- - - Объявления вложенных последовательностей
- могут быть сжаты
# Поскольку YAML это надмножество JSON, вы можете использовать JSON-подобный
# синтаксис для словарей и последовательностей:
json_map: {"key": "value"}
json_seq: [3, 2, 1, "takeoff"]
в данном случае кавычки не обязательны: {key: [3, 2, 1, takeoff]}
##########################
# Дополнительные функции #
##########################
# В YAML есть удобная система так называемых 'якорей' (anchors), которые позволяют легко
# дублировать содержимое внутри документа. Оба ключа в примере будут иметь одинаковые значения:
anchored_content: &anchor_name Эта строка будет являться значением обоих ключей.
other_anchor: *anchor_name
# Якоря могут использоваться для дублирования/наследования свойств
base: &base
name: Каждый будет иметь одинаковое имя
# Регулярное выражение << называется ключом объединения независимо от типа языка.
# Он используется, чтобы показать что все ключи одного или более словарей должны быть
# добавлены в текущий словарь.
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
#######################
# Дополнительные типы #
#######################
# Строки и числа не единственные величины которые может понять YAML.
# 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
... # конец документа
```
### Больше информации
+ [YAML официальный вебсайт](http://yaml.org/)
+ [YAML онлайн валидатор](http://www.yamllint.com/)