Разбор YAML в Ruby: Как получить массив элементов определенного типа? - PullRequest
0 голосов
/ 05 июля 2011

У меня есть следующий YAML:

- name: List of monkeys
- author: Nicolas Raoul
- version: 1
- monkey: Chee-Chee
- monkey: Curious George
- monkey: Mojo

Как получить массив обезьян в Ruby?Число параметров метаданных (имя, автор, ...) является переменной.

Возвращается что-то вроде [Chee-Chee, Curious George, Mojo]

Примечание. Я не хочу создаватьmonkeys узел, содержащий все обезьяны как подэлементы, потому что есть много обезьян, и я хочу, чтобы файл был действительно простым.

1 Ответ

1 голос
/ 05 июля 2011

Ну, ваш YAML выглядит немного сумасшедшим: каждая из этих строк - это hash, содержащая один элемент. Тем не менее, если вы застряли с этим, что-то вроде этого даст вам массив имен обезьян:

require 'yaml'

data = YAML.load(DATA.read)
p data.map { |row| row['monkey'] }.compact

__END__
- name: List of monkeys
- author: Nicolas Raoul
- version: 1
- monkey: Chee-Chee
- monkey: Curious George
- monkey: Mojo

Очевидно, что вы можете загрузить YAML откуда угодно, он не обязательно должен быть в вашем блоке данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...