Как ссылаться на значения в файле yaml? - PullRequest
0 голосов
/ 18 февраля 2019

Я написал файл YAML следующим образом:

private_ips:
    - 192.168.1.1
    - 192.168.1.2
    - 192.168.1.3
    - 192.168.1.4

testcases:
    - name: test_outbound
      ip: << I want to use reference to  private_ips[0] = '192.168.1.1'

Как использовать ссылки в файле YAML?

1 Ответ

0 голосов
/ 18 февраля 2019

Вы можете использовать что-то вроде:

ip: !Ref private_ips.0

в YAML.Но для этого потребуется, чтобы программа, загружающая YAML, реализовала специальный тип для тега !Ref, который интерпретирует его узел способом, относящимся к текущей структуре данных.Это несколько проблематично в большинстве загрузчиков YAML, так как они выполняют первичный обход глубины, и при создании узла с тегами !Ref корня корневого документа YAML нет никакого понятия.Это можно решить вторым проходом после загрузки структуры данных. В спецификации YAML не существует "ярлыка" для такого обхода документа, чтобы получить значение без какой-либо специальной загрузки программы (т. Е. Не указано в спецификации YAML).

В спецификации YAML есть концепция якорей (обозначенных &) и псевдонимов (обозначенных *), в зависимости от того, как вы хотите использовать это, которые могут решить вашу проблему, например, если вы хотите поэкспериментироватьс каким IP-адресом следует использовать для тестирования:

private_ips:
    - &test 192.168.1.1
    - 192.168.1.2
    - 192.168.1.3
    - 192.168.1.4

testcases:
    - name: test_outbound
      ip: *test

Он должен загружаться в любой загрузчик YAML, соответствующий спецификации, как если бы последняя строка была записана как:

      ip: 192.168.1.1

Безваша программа выполняет дополнительную обработку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...