Метакод для редактирования компонентов форм с разной глубиной вложенности

Есть необходимость однотипно изменить дизайн разных существующих форм

DESIGN formA {
        paneA1 {
            paneA2 {
          // тут вносимые изменения
      }
    }

DESIGN formB {
        paneB1 {
            paneB2 {
                paneB3 {
          // тут вносимые изменения
        }
      }
    }

Изменения одни и те же, но в разных контейнерах и на разном уровне вложенности форм.

Для одинаковых уровней вложенности (например 2) работает такой метакод:

META changeForm(formName, formElement1, formElement2)
DESIGN formName{
        formElement1{
            formElement2 {
       // тут вносимые изменения
            }
        }
    }
END

Возможно ли такое относительно красиво сделать META кодом для разных уровней вложенности?


Ответы (1 шт):

Автор решения: Andrey

Коллеги подсказли, что необязательно делать вот так:

DESIGN formB {
    paneB1 {
        paneB2 {
            paneB3 {
               // тут вносимые изменения
            }
        }
    }
}

Достаточно вот так:

DESIGN formB {
    paneB3 {
        // тут вносимые изменения
    }
}

Инструкция редактирования позволяет изменить указанный компонент, который должен являться потомком (не обязательно непосредственным) текущего контейнера

То есть контейнер может быть сколько угодно вложенный, не нужно весь путь в дереве указывать

Соответственно META код для такой задачи будет выглядеть следующим образом:

META changeForm(formName, formElement)
DESIGN formName{
        formElement{
              // тут вносимые изменения
        }
    }
END
→ Ссылка