Многоуровневая вложенность в YAML - PullRequest
14 голосов
/ 18 января 2012

Я пытаюсь использовать YAML для создания списка всех сохраненных процедур, используемых в приложении, и откуда они вызываются.Я предполагал что-то вроде ниже, но я думаю, что YAML не позволяет многоуровневое вложение.

access_log:
  stored_proc: getsomething
    uses:
      usedin: some->bread->crumb
      usedin: something else here
  stored_proc: anothersp
    uses:
      usedin: blahblah

reporting:
  stored_proc: reportingsp
    uses:
      usedin: breadcrumb

Есть ли способ сделать это в YAML, а если нет, то какие еще есть альтернативы?

Ответы [ 3 ]

14 голосов
/ 18 января 2012

Как отмечает @Ilion, у вас не может быть свойства, указывающего как на строку, так и на объект; вам понадобится либо массив, либо метка для ваших имен сохраненных_процессов. Кроме того, вы продолжаете работать над своими ключами, используя одно и то же имя, когда то, что вам действительно нужно, это массив. Вот простой пример и доказательство того, что это работает:

MY_YAML = "
access_log:
  - 
    name: getsomething
    uses:
      - some->bread
      - something else here
  -
    name: anothersp
    uses:
      - blahblah"

require 'yaml'
require 'pp'
pp YAML.load(MY_YAML)
#=> {"access_log"=>[
#=>   {"name"=>"get something", "uses"=>["some->bread", "something else here"]},
#=>   {"name"=>"anothersp", "uses"=>["blahblah"]}
#=> ]}
14 голосов
/ 18 января 2012

Именно так я и использовал вложенные уровни в YAML для файлов конфигурации для сценариев Perl. Это руководство по YAML может быть хорошим руководством для вас о том, как работать со структурой, которую вы хотите в Ruby.

Я думаю, что ваша проблема заключается в попытке смешать типы.Я предлагаю пересмотреть как это:

reporting:
  stored_procs:
    reportingsp
      uses:
        usedin: breadcrumb
    secondProc
      uses:
        usedin: something_else
0 голосов
/ 11 октября 2012
---
access_log:  
  - stored_proc: getsomething    
  - uses:     
    - usedin: some->bread->crumb      
    - usedin: something else here  
    - stored_proc: anothersp      
  - uses:     
    - usedin: blahblah
reporting:
  - stored_proc: reportingsp    
  - uses:       
    - usedin: breadcrumb
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...