Это правильный метод использования YAML? - PullRequest
0 голосов
/ 25 ноября 2011

Я новичок в snakeyaml и 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 мне трудно добиться хороших результатов.

1 Ответ

2 голосов
/ 25 ноября 2011

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

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)

...