Знаймо

Додати знання

приховати рекламу

Цей текст може містити помилки.

YAML



План:


Введення

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

Назва YAML являє собою рекурсивний акронім YAML Ain't Markup Language ("YAML - не мова розмітки "). У назві відображено історію розвитку: на ранніх етапах мова називалася Yet Another Markup Language ("Ще один мова розмітки ") і навіть розглядався як конкурент XML, але пізніше був перейменований з метою акцентувати увагу на даних, а не на розмітці документів.


1. Особливості

YAML створений Кларком Евансом ( англ. Clark Evans ), Для реалізації наступних вимог:

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

2. Легкість для читання і запису

Синтаксис YAML мінімалістичний, особливо в порівнянні з XML синтаксисом. У специфікації вказують, що великий вплив зробив стандарт RFC 822.

3. Використання

YAML в основному використовується як формат для файлів конфігурації. Застосовується для налаштування веб-каркасів Ruby on Rails, Symfony, GAE framework і Google App Engine.

4. Приклад

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

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

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

В XML, витрати на розмітку набагато більше:

  >   >   >  PRIVMSG   >   >  newUri   >   >  ^ Http:// .*   >   >   >   >  PRIVMSG   >   >  deleteUri   >   >  ^ Delete .*   >   >   >   >  PRIVMSG   >   >  randomUri   >   >  ^ Random .*   >   >   > 

Звичайно, можна зробити більш "дешеве" відображення з використанням атрибутів (і втратою гнучкості):

  name  =  "PRIVMSG"  >   name  =  "NewUri"  regex  =  "^ Http:// .*"  />   name  =  "DeleteUri"  regex  =  "^ Delete .*"  />   name  =  "RandomUri"  regex  =  "^ Random .*"  />   > 

Тепер те ж саме на YAML:

 event: PRIVMSG methods: - name: newUri regexp: '^ http:// .*' - name: deleteUri regexp: '^ delete .*' ​​- name: randomUri regexp: '^ random .*' 

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


5. Синтаксичні елементи

5.1. Послідовності

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

5.2. Зіставлення імені і значення

 --- # Блочний формат name: John Smith age: 33 --- # Однорядковий формат {name: John Smith, age: 33} 

5.3. Блокові літерали

5.3.1. Переклади рядків зберігаються

 --- | 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 

5.3.2. Переклади рядків зникають

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

5.4. Послідовності з зіставлень

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

5.5. Зіставлення з послідовностей

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

6. Реалізації

Підтримка YAML існує в мовах програмування:


Цей текст може містити помилки.

Схожі роботи | скачати
© Усі права захищені
написати до нас
Рейтинг@Mail.ru