2016-12-13 7 views
1

Попытка использовать анкеры аддитивным способом, следующий код YAML не будет работать, но может объяснить, что я хочу, чтобы это сделатьYAML якорь в качестве заполнителей в URL строки

endpoint: 
    data.updates.index.name: &UPDATES-INDEX-NAME "data-updates" 
    meta.data.type.name: &DATA-TYPE-NAME "meta-data" 
    last.run.type.name: &RUN-TYPE-NAME "lastrun" 
    search.ctx: *UPDATES-INDEX-NAME "/" *DATA-TYPE-NAME "/_search" 
    search.lastrun: *UPDATES-INDEX-NAME "/" *RUN-TYPE-NAME "/_search" 
    update.lastrun: *UPDATES-INDEX-NAME "/" *RUN-TYPE-NAME "/" 

a1: & anchor1 «привет» a2: & anchor2 "луна" свойство: * anchor1 "-" * anchor2

свойство должно дать "привет-луна" это вообще возможно? попробовал также использовать $ {} вместо анкеров

ответ

0

Это невозможно с помощью YAML. Функция привязки/псевдонима была разработана для сериализации циклических структур данных, а не для повторного использования значений внутри выражений. В YAML нет выражений (ну, кроме тега !!merge для YAML 1.1, который устарел и не поможет вам здесь). Вам необходимо выполнить все операции, которые вы хотите делать во время или после загрузки.

Возможный способ сделать это:

endpoint: 
    data.updates.index.name: "data-updates" 
    meta.data.type.name: "meta-data" 
    last.run.type.name: "lastrun" 
    search.ctx: "{{data.updates.index.name}}/{{meta.data.type.name}}/_search" 
    search.lastrun: "{{data.updates.index.name}}/{{last.run.type.name}}/_search" 
    update.lastrun: "{{data.updates.index.name}}/{{last.run.type.name}}/" 

Как вы видите, я не-YAML разметки (в данном случае, усы типа) в качестве заполнителя. Вам необходимо будет обработать данные после загрузки, чтобы заменить заполнители соответствующим содержанием.