Предоставление файла YAML более чем одного ключа, используя только одно значение для ключей

У меня проблема с созданием файла yaml, который будет содержать следующие ключи:

ETA SOL VETS EMC

Из этих ключей мне нужно одно значение, которое будет адресом электронной почты. Все четыре ключа являются одним и тем же адресом электронной почты. Можно ли создать файл yaml, содержащий более одного ключа и только одно значение?

Например:

agencies:
         - ETA
         - SOL
         - VETS
         - EMC
            advocate_email: "example@example.com" #<= Give these four the same value
         - some
         - other
         - ones
             advocate_email: "example1@example1.com" #<= Give three another value.. So one and so forth

3 ответа

Решение

** ОБНОВЛЕНИЕ ** Я думаю, что у вас есть несколько электронных писем, и у каждой группы есть более длинный список.

group1:
  email: me@email.com
  list:
    - ETA
    - SOL
    - VETS
group2:
  email: me2@email.com
  list:
    - ONE
    - TWO
    - THREE

** КОНЕЦ ОБНОВЛЕНИЯ **

Если я правильно понимаю, и вы хотите тот же адрес электронной почты:

email: &email me@email.com

emails:
  ETA: *email
  SOL: *email
  VETS: *email

Выход:

pry(main)> YAML.load(File.read('foo.yml'))
=> {"email"=>"me@email.com", "emails"=>{"ETA"=>"me@email.com", "SOL"=>"me@email.com", "VETS"=>"me@email.com"}}

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

agencies:
  ? - ETA
    - SOL
    - VETS
    - EMC
  : advocate_email: example@example.com
  ? - some
    - other
    - ones
  : advocate_email: example1@example1.com

каждый ? обозначает ключ и последующее : обозначает значение. Показывать:

require "pp"
require "yaml"

yaml = <<YML
agencies:
  ? - ETA
    - SOL
    - VETS
    - EMC
  : advocate_email: example@example.com
  ? - some
    - other
    - ones
  : advocate_email: example1@example1.com
YML

pp YAML.load(yaml)
# => {"agencies"=>
#      {["ETA", "SOL", "VETS", "EMC"]=>{"advocate_email"=>"example@example.com"},
#       ["some", "other", "ones"]=>{"advocate_email"=>"example1@example1.com"}}}

Я не знаю, правильно ли я понимаю, но я думаю, что вы хотите что-то вроде

emails:
  ETA: email1@example.com
  SOL: email2@example.com
  VETS: email3@example.com
Другие вопросы по тегам