Является ли это допустимым методом использования YAML?

Я новичок в змееямле и yaml в целом. Он нужен мне для хранения информации о "комнатах" для MUD.

Записи для комнат будут выглядеть примерно так:

room:
  id: 12
  entry: "Long string"
  description: "Longer more precise string"
  objects:
    ids: 1,23

object:
  id: 1
  name: "chest"
  description: "looks pretty damn old"
  on-text: "the chest has been opened!"
  off-text: "the chest has been closed!"

По сути, в каждой комнате есть id и некоторый текст, который будет отображаться игроку, когда он входит/ищет в ней. Он также имеет массив «объектов», которые сами объявлены в том же файле yaml.

Возможна ли эта конфигурация в моем файле yaml? Кроме того, мне нужно было бы извлечь в массивы каждую комнату и каждый объект, поэтому это выглядит так:

[12, "long string", "Longer more precise string", [1, "chest", "looks pretty damn old", "the chest has been opened!", "the chest has been closed!"], [ ... item 23 ... ]]

Эта конфигурация позволяет мне легко анализировать файл и создавать классы GenericRoom и GenericObject, создавая один единственный цикл и ссылаясь на каждое значение по позиции в массиве. Это то, что SnakeYAML может сделать для меня? Я играл с некоторыми примерами, но из-за отсутствия знаний в реальном YAML мне трудно получить хорошие результаты.


person n0pe    schedule 24.11.2011    source источник


Ответы (1)


При этом вы должны самостоятельно подключать объекты к комнатам:

room:
  id: 12
  entry: "Long string"
  objects: [1, 23]

objects:
  - { id: 1, text: bla bla }
  - { id: 2, text: bla bla 2 }
  - { id: 23, text: bla bla 23}

или SnakeYAML может извлечь выгоду из привязок и псевдонимов: (привязки должны быть определены до использования псевдонимов)

objects:
  - &id001 {id: 1, text: bla bla }
  - &id002 {id: 2, text: bla bla 2 }
  - &id023 {id: 23, text: bla bla 23 }

room:
  id: 12
  entry: "Long string"
  objects: [ *id001, *id023]

(Вы можете проверить свои документы здесь: http://www.yaml.org/spec/1.2/spec.html#id2765878)

person Andrey    schedule 25.11.2011