Книга: Программирование на языке Ruby

10.2.6. Маршалинг в формате YAML

10.2.6. Маршалинг в формате YAML

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

Затребовав директивой require библиотеку yaml, мы добавляем в каждый объект метод to_yaml. Поучительно будет посмотреть на результат вывода в этом формате нескольких простых и более сложных объектов.

require 'yaml'
str = "Hello, world"
num = 237
arr = %w[ Jan Feb Mar Apr ]
hsh = {"This" => "is", "just a"=>"hash."}
puts str.to_yaml
puts num.to_yaml
puts arr.to_yaml
puts hsh.to_yaml
# Выводится:
# --- "Hello, world"
# --- 237
# ---
# - Jan
# - Feb
# - Mar
# - Apr
# ---
# just a: hash.
# This: is

Обратным по отношению к to_yaml является метод YAML.load, который принимает в качестве параметра строку или поток.

Предположим, что имеется такой файл data.yaml:

---
- "Hello, world"
- 237
-
  - Jan
  - Feb
  - Mar
  - Apr
-
 just a: hash.
 This: is

Это те же четыре элемента данных, которые мы видели раньше, только они сгруппированы в единый массив. Если загрузить этот поток, то получим массив-

require 'yaml'
file = File.new("data.yaml")
array = YAML.load(file)
file.close
p array
# Выводится:
# ["Hello, world", 237, ["Jan", "Feb", "Mar", "Apr"],
# {"just a"=>"hash.", "This"=>"is"} ]

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

YAML позволяет и многое другое, о чем мы не можем здесь рассказать. Дополнительную информацию вы найдете на сайте ruby-doc.org или в справочном руководстве.

Оглавление книги


Генерация: 1.306. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз