рубин yaml ypath как xpath?

Привет у меня есть yaml файл как так

---
data:
  - date: "2004-06-11"
    description: First description

  - date: "2008-01-12"
    description: Another descripion

Как я могу сделать запрос "ypath", подобный xpath для xml? Что-то как "получает описание, где дата 11.06.2004"

YAML.parse_file('myfile.yml').select('/data/*/date == 2004-06-11')

Как дела это, и если это возможно, как я могу так же отредактировать описание 'ypath'?

Спасибо

12
задан gurpal2000 20 March 2010 в 16:46
поделиться

2 ответа

Файл yaml описывает отображение хэшей из строк в массивы хэшей, которые отображают из строк в строки. Не существует такой вещи, как xpath для вложенных хэшей (по крайней мере, в стандартной библиотеке), но это достаточно просто со стандартными методами Hash и Enumerable:

hash = YAML.load_file('myfile.yml')
item = hash["data"].find {|inner_hash| inner_hash["date"] == "2004-06-11"}
#=> {"date"=>"2004-06-11", "description"=>"First description"}

Чтобы изменить описание, вы можете просто сделать item [" description "] =" новое описание ", а затем сериализуйте хэш обратно в YAML, используя hash.to_yaml .

3
ответ дан 2 December 2019 в 18:52
поделиться

Если Ruby не является жестким ограничением, вы можете взглянуть на инструмент dpath. Он предоставляет xpath-подобный язык запросов к YAML (и другим) файлам. Возможно, вы вызовете его извне для фильтрации данных.

4
ответ дан 2 December 2019 в 18:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: