2011-11-24 3 views
0

나는 snakeyaml과 yaml에게 일반적입니다. MUD의 "객실"에 대한 정보를 저장해야합니다. 객실에 대한이것은 YAML을 사용하는 유효한 방법입니까?

의 항목은 다음과 같이 보일 것입니다 : 그들은 그것을 검색/입력 할 때

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 클래스를 생성하기 위해 쉽게 배열 위치별로 모든 값을 참조합니다. 뱀이 나를 위해 할 수있는 뭔가인가? 몇 가지 예를 가지고 놀았지만 실제 YAML에 대한 지식이 부족하여 좋은 결과를 얻지 못하고 있습니다. 당신이 방에 개체를 연결해야이와

답변

2

자신 :

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)