Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Из Википедии — свободной энциклопедии

YAML
Изображение логотипа
Расширение .yaml или .yml
MIME-тип application/yaml[1][2][…]
Разработчик Кларк Эванс[d]
Опубликован 11 мая 2001[3]
Последний выпуск 1.2.2 (1 октября 2021; 2 года назад (2021-10-01))
Тип формата Обмен данными
Расширен из XML, Perl и JSON
Открытый формат? Да
Сайт yaml.org (англ.)

YAML (рекурсивный акроним англ. «YAML Ain't Markup Language» — «YAML — не язык разметки») — дружественный формат сериализации данных, концептуально близкий к языкам разметки, но ориентированный на удобство ввода-вывода типичных структур данных многих языков программирования.

В трактовке названия отражена история развития: на ранних этапах YAML расшифровывался как yet another markup language («ещё один язык разметки») и даже позиционировался как конкурент XML, но позже был переименован с целью акцентировать внимание на данных, а не на разметке документов[4].

Цели создания

Согласно целям, озвученным Кларком Эвансом (англ. Clark Evans), YAML 1.0 призван[5]:

  1. быть понятным человеку;
  2. поддерживать структуры данных, родственные для языков программирования;
  3. быть переносимым между языками программирования;
  4. использовать цельную модель данных для поддержки обычного инструментария;
  5. поддерживать потоковую обработку;
  6. быть выразительным и расширяемым;
  7. быть лёгким в реализации и использовании.

К текущей редакции YAML (1.2) цели были изменены[6]:

  • пункты 2 и 3 поменяли местами;
  • пункт 5 заменили на «YAML поддерживает обработку за один проход».

Синтаксис

Синтаксис YAML минималистичен, особенно по сравнению с синтаксисом XML. В спецификации указано, что большое влияние на YAML оказал стандарт RFC 822. Ниже приведены образцы различных компонентов разметки. Следует заметить, что наличие варианта записи в однострочном формате делает JSON допустимым подмножеством YAML.

Последовательности (списки)

 --- # Список фильмов: последовательность в блочном формате
 - Casablanca
 - Spellbound
 - Notorious
 --- # Список покупок: последовательность в однострочном формате
 [milk, bread, eggs, juice]

Сопоставления имени и значения (словари)

 --- # Блочный формат
 name: "John Smith"
 age: 33
 --- # Однострочный формат
 {name: "John Smith", age: 33}

Строковые данные

Переводы строк сохраняются

 --- |
   There was a young fellow of Warwick
   Who had reason for feeling euphoric
       For he could, by election
       Have triune erection
   Ionic, Corinthian, and Doric

Переводы строк исчезают

 --- >
   Wrapped text
   will be folded
   into a single
   paragraph
   
   Blank lines denote
   paragraph breaks

Последовательности из сопоставлений

 - {name: John Smith, age: 33}
 - name: Mary Smith
   age: 27

Сопоставления из последовательностей

 men: [John Smith, Bill Jones]
 women:
   - Mary Smith
   - Susan Williams

Основные элементы YAML:

  • потоки YAML используют печатаемые Unicode-символы, как UTF-8, так и UTF-16
  • отступы из пробелов (символы табуляции не допускаются) используются для обозначения структуры
  • комментарии начинаются с символа «решётки» (#), могут начинаться в любом месте строки и продолжаются до конца строки
  • списки обозначаются начальным дефисом (-) с одним членом списка на строку, либо члены списка заключаются в квадратные скобки ([ ]) и разделяются запятой и пробелом (, )
  • ассоциативные массивы представлены двоеточием с пробелом (: ) в виде ключ: значение, по одной паре ключ-значение на строку, либо в виде пар, заключённых в фигурные скобки и разделенных запятой и пробелом (, )
    • ключ в ассоциативном массиве может иметь в качестве префикса вопросительный знак (?), что позволяет указать сложный ключ, например представленный в виде списка
  • строки записываются без кавычек, однако могут быть заключены в одиночные или двойные кавычки
    • внутри двойных кавычек могут быть использованы экранированные символы в C-стиле, начинающиеся с обратной косой (\)
  • YAML позволяет задавать подстановки с помощью якорей & и псевдонимов (*). Пример
 aliases:  #последовательность настроек
  - &myAlias1
    datakey: dataval 1
    moredata: morevals 1
  - &myAlias2
    datakey: dataval 2
    moredata: morevals 2
 config:
  - *myAlias1  # *myAlias1 после парсинга будет заменен на [{"datakey": "dataval 1", "moredata": "morevals 1"}]
  • явное задание типа оформляется путём '!![указание типа]'. Пример, !!str 100 после разбора выдаст строковое значение «100» вместо целого числа 100.
  • значения типа Дата/Время задаются в формате YYYY-MM-DD или YYYY-MM-DD HH:MM:SS. Если необходимо задать дату как строку, нужно заключать её в кавычки («2012-12-21»)

Пример

В некотором проекте нужно хранить конфигурацию<span title="Статья «Конфигурационный файл» в русском разделе отсутствует">ru</span>en, описывающую отображение (англ. bindings) IRC-команд на функции, с помощью регулярных выражений.

Вот исходная конфигурация, представленная в виде таблицы:

ircEvent method regexp
PRIVMSG newUri "^http://.*"
PRIVMSG deleteUri "^delete.*"
PRIVMSG randomUri "^random.*"

В YAML эта конфигурация может быть представлена следующим образом:

bindings:
  - ircEvent: PRIVMSG
    method: newUri
    regexp: '^http://.*'
  - ircEvent: PRIVMSG
    method: deleteUri
    regexp: '^delete.*'
  - ircEvent: PRIVMSG
    method: randomUri
    regexp: '^random.*'

или

bindings: 
  - {ircEvent: PRIVMSG, method: newUri, regexp: '^http://.*'}
  - {ircEvent: PRIVMSG, method: deleteUri, regexp: '^delete.*'}
  - {ircEvent: PRIVMSG, method: randomUri, regexp: '^random.*'}

Для сравнения, в XML-представлении данная конфигурация может быть представлена следующим образом:

<bindings>
    <binding>
        <ircEvent>PRIVMSG</ircEvent>
        <method>newUri</method>
        <regexp>^http://.*</regexp>
    </binding>
    <binding>
        <ircEvent>PRIVMSG</ircEvent>
        <method>deleteUri</method>
        <regexp>^delete.*</regexp>
    </binding>
    <binding>
        <ircEvent>PRIVMSG</ircEvent>
        <method>randomUri</method>
        <regexp>^random.*</regexp>
    </binding>
</bindings>

или

<bindings>
	<binding ircEvent="PRIVMSG" method="newUri" regexp="^http://.*" />
	<binding ircEvent="PRIVMSG" method="deleteUri" regexp="^delete.*" />
	<binding ircEvent="PRIVMSG" method="randomUri" regexp="^random.*" />
</bindings>

В совместимом JSON можно выразить это так:

{"bindings":
 {"ircEvent|method|regexp":
  ["PRIVMSG|newUri|^http://.*",
   "PRIVMSG|deleteUri|^delete.*",
   "PRIVMSG|randomUri|^random.*"]}}

Вложенные XML-элементы могут использоваться для отображения произвольных структур, а YAML более близок к отображению типичных моделей данных из Ruby, Perl, Python, Java, позволяя описывать свободные сочетания последовательностей, сопоставлений и скалярных типов — то есть ближе к реальным структурам данных языков программирования, и не требует различных соглашений про DOM-отображения структур данных на документы и обратно, как требуется в XML.

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

Среди программных систем, использующих YAML как формат для файлов конфигурации — Ruby on Rails, Docker Compose, Kubernetes (притом поддерживается взаимно-однозначное соответствие с форматом JSON), Dancer, Symfony, GAE framework, Google App Engine, Dart, Home Assistant.

Примечания

  1. YAML Media Type
  2. https://www.iana.org/assignments/media-types/application/yaml
  3. Эванс К. YAML Draft 0.1Yahoo!.
  4. If YAML ain't markup language, what is it? (англ.). StackOverflow (6 августа 2011). Дата обращения: 15 марта 2021. Архивировано 23 апреля 2021 года.
  5. Oren Ben-Kiki, Clark Evans, Brian Ingerson. YAML Ain't Markup Language (YAML™) 1.0 (англ.) (29 января 2004). Дата обращения: 15 марта 2021. Архивировано 6 мая 2021 года.
  6. Oren Ben-Kiki, Clark Evans, Ingy döt Net. YAML Ain’t Markup Language (YAML™) Version 1.2 (1 октября 2009). Дата обращения: 15 марта 2021. Архивировано 24 января 2019 года.

Ссылки

  • YAML.ORG (англ.). — официальный сайт. Дата обращения: 29 ноября 2010. Архивировано 10 февраля 2012 года.
  • YAML. CustisWiki. Заказные ИнформСистемы. Дата обращения: 29 апреля 2006. Архивировано 10 февраля 2012 года.
  • YAML Validator (англ.). — Валидатор YAML.
Эта страница в последний раз была отредактирована 7 февраля 2024 в 22:13.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).