出力

2016-07-06 4 views
0

をフォーマットしてYAMLファイルのキーのすべての値Iは、キーのカップルのための複数の値を持つYAMLファイルを持っている:出力

inbox: 
    mary: 
      - '-MD-C-LAUREL-ADMIN' 
      - '-MD-E-BALTIMORE-ADMIN' 
      - '-MD-R1-CAMBRIDGE-ADMIN' 
      - '-MD-R2-BELAIR-ADMIN' 
      - '-MD-R4-LAUREL-ADMIN' 
      - '-MD-R5-HAGERSTWN-ADMIN' 
    mike: 
      - '-VA-E-Richmond-Admin' 
      - '-VA-Richmond-Admin' 
      - '-VA-Manassas-Admin' 
      - '-VA-Norfolk-Admin' 
      - '-VA-Roanoke-Admin' 
      - '-VA-Verona-Admin' 
    max: '-ATLANTA-RO-ADMIN' 

YAMLファイル「test.yml」

POC = YAML.load_file('test.yml')  

def get_info(name) 
    POC['inbox'][name.downcase].nil? ? "** #{name} IS NOT POC **" : POC['inbox'][name.downcase] 
end 

何私がしたいのは、例えば、これを実行するときなど、何らかのフォーマットのキーをすべて出力することです:

irb(main):003:0> require 'yaml' 
=> true 
irb(main):004:0> POC = YAML.load_file('test.yml') 
=> {"inbox"=>{"mary"=>["-MD-C-LAUREL-ADMIN", "-MD-E-BALTIMORE-ADMIN", "-MD-R1-CAMBRIDG 
E-ADMIN", "-MD-R2-BELAIR-ADMIN", "-MD-R4-LAUREL-ADMIN", "-MD-R5-HAGERSTWN-ADMIN"], "mi 
ke"=>["-VA-E-Richmond-Admin", "-VA-Richmond-Admin", "-VA-Manassas-Admin", "-VA-Norfolk 
-Admin", "-VA-Roanoke-Admin", "-VA-Verona-Admin"]}} 
irb(main):005:0>  def get_info(name) 
< "** #{name} IS NOT POC **" : POC['inbox'][name.downcase] 
irb(main):007:1>  end 
=> :get_info 
irb(main):008:0> get_info('mary') 
=> ["-MD-C-LAUREL-ADMIN", "-MD-E-BALTIMORE-ADMIN", "-MD-R1-CAMBRIDGE-ADMIN", "-MD-R2-B 
ELAIR-ADMIN", "-MD-R4-LAUREL-ADMIN", "-MD-R5-HAGERSTWN-ADMIN"] 
irb(main):009:0> 

Possibly one of the following inboxes: 
1. -MD-C-LAUREL-ADMIN 
2. -MD-E-BALTIMORE-ADMIN 
3. -MD-R1-CAMBRIDGE-ADMIN 
4. -MD-R2-BELAIR-ADMIN 
5. -MD-R4-LAUREL-ADMIN 
6. -MD-R5-HAGERSTWN-ADMIN 

は、どのように私は一つの値以上がある場合、一致する番号を持つ配列内の情報を出力して行くことができますか?

+1

あなただけIRBプロンプト、式とその出力を示していないにIRB出力を取り除くだろうかどうかは本当に私たちを助けます。私たちの多くは、私たちのエディタで「見ることが信じています」を使用しています。これにより、ノイズのないIRBのような出力を選択的に簡単に表示できます。コードを清潔に保つことは、私たちがあなたを助けるのを助けます –

+0

@theTinMan今からやります – JohnDoeYo

答えて

1

あなたの質問はYAMLとまったく関係ありません。インデックス付きの配列をプリントアウトする方法はすべてです。

%w(foo bar baz).each.with_index(1) do |str, i| 
    puts "#{i}. #{str}" 
end 

または

puts %w(foo bar baz).each.with_index(1).map{|str, i| "#{i}. #{str}"} 
+0

YAMLファイルから来た場合、YAMLとは何の関係もありません。 – JohnDoeYo

+1

アレイはどこからでも来ることができます。 YAMLの解析に間違いはありません。 – Aetherus

+0

クール。答えをありがとう! – JohnDoeYo