YAML

Материал из Seo Wiki - Поисковая Оптимизация и Программирование
Перейти к навигацииПерейти к поиску

YAMLчеловекочитаемый формат сериализации данных, концептуально близкий к языкам разметки, но ориентированный на удобство ввода-вывода типичных структур данных многих языков программирования.

Название YAML представляет собой рекурсивный акроним YAML Ain't Markup Language («YAML — не язык разметки»). В названии отражена история развития: на ранних этапах язык назывался Yet Another Markup Language («Ещё один язык разметки») и даже рассматривался как конкурент XML, но позже был переименован с целью акцентировать внимание на данных, а не на разметке документов.

Особенности

YAML создан Кларком Эвансом (англ. Clark Evans), для реализации следующих требований:

  • YAML краток и понятен;
  • YAML очень выразительный и расширяемый;
  • YAML допускает простой потоковый интерфейс;
  • YAML использует структуры данных, родные для языков программирования;
  • YAML легко реализуется, возможно, слишком легко;
  • YAML использует цельную модель данных. Нет исключений — нет беспорядка.

Легкость для чтения и записи

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

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

YAML в основном используется как формат для файлов конфигурации. Применяется для настройки веб-каркасов Ruby on Rails и Symfony.

Пример

В некотором проекте нужно хранить конфигурацию, описывающую отображение текстовых команд на функции, с помощью регулярных выражений. Можно представить эту структуру плоским текстом, типа конфигурационного файла от древней UNIX-программы:

PRIVMSG newUri ^http://.*
PRIVMSG deleteUri ^delete.*
PRIVMSG randomUri ^random.*

Тогда расходы на разметку минимальны, но все становится очень негибко — значения не могут включать пробелы, не могут быть многострочными и т. п. Подходит только в простых случаях.

В XML, расходы на разметку намного больше: <source lang="xml"> <bindings>

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

</bindings> </source> Конечно, можно сделать более «дешёвое» отображение с использованием атрибутов (и потерей гибкости): <source lang="xml"> <event name="PRIVMSG">

<method name="newUri" regex="^http://.*" />
<method name="deleteUri" regex="^delete.*" />
<method name="newUri" regex="^random.*" /> 

</event> </source>

Теперь то же самое на YAML: <source lang="text"> event: PRIVMSG methods:

 - name: newUri
   regexp: '^http://.*'
 - name: deleteUri
   regexp: '^delete.*'
 - name: randomUri
   regexp: '^random.*'

</source>

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

Синтаксические элементы

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

--- # Список фильмов: последовательность в блочном формате
- 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.ORG (англ.). — официальный сайт. Проверено 4 августа 2008.
  • YAML. CustisWiki. Заказные ИнформСистемы. — введением в технологию и сравнение с альтернативными представлениями. Проверено 29 апреля 2006.
  • YAML-парсер на Java


cs:YAML de:YAML en:YAML es:YAML fi:YAML fr:YAML id:YAML ja:YAML ko:YAML pl:YAML pt:YAML sv:YAML uk:YAML zh:YAML

Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....