Ссылки в конфигурации

якоря YAMLНайдите определение до раскрытия ссылки

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

якоря YAML: анализ и раскрытие

Исходный YAML

Раскрытый YAML

Ввод обрабатывается только в этом браузере: не отправляется, не исполняется, не сохраняется и не попадает в URL.

Слияние изначально выключено. Явные ключи имеют приоритет, среди источников побеждает более ранняя карта. Слияние поверхностное. Пример слияния также предлагает включить эту настройку.

yaml 2.9.0 · Директива источника должна совпадать с выбранной версией. В результате версия объявлена явно.

Ввод: 500 000 единиц UTF-16 / 2 МБ UTF-8; 100 документов; по 50 000 исходных узлов и посещений при раскрытии; глубина 100; 5 000 строк графа; по 2 млн символов вывода и единиц работы со скалярами; тайм-аут 5 секунд.

Граф исходных ссылок

Стрелка ведёт от определения к использованию. Нажмите любую позицию, чтобы перейти во ввод. «Цель найдена» означает наличие определения, но не возможность раскрыть циклический граф.

Введите YAML или запустите анализ.

Если конфигурация содержит якоря YAML с одинаковыми именами, важно проверить порядок определений. Каждый псевдоним ссылается на ближайшее предшествующее определение внутри своего документа. Граф показывает их отдельно, с точными строками и столбцами.

Инструмент находит якоря и псевдонимы YAML и выводит раскрытые значения рядом с исходным текстом. Ссылки YAML можно проследить до определения, а ключи слияния YAML включить отдельно для проверки наследуемых настроек. При ошибке собранные связи остаются доступными.

Зачем проверять якоря YAML

Узнайте, какое определение использует конфигурация

Найдите фактический источник значения

Проверяя якоря YAML, ориентируйтесь на позицию определения, а не только на имя. Более позднее определение меняет цель следующих псевдонимов. Граф различает эти узлы, а символы & и * внутри строк не считает ссылками.

Два определения разных цветов с одинаковой меткой соединены со своими последующими ссылками; цикл выделен красным.

Проверьте приоритет значений

Включите расширение слияния, чтобы увидеть, какие настройки унаследованы, а какие заменены явными ключами. Среди карт в последовательности приоритет у первой. Результат остаётся отдельно от ввода, пока вы не подтвердите его применение.

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

Как проверить результат раскрытия

Три шага от выбора схемы до подтверждения замены

01

Выберите схему и политику слияния

По умолчанию используется основная схема YAML 1.2, а слияние выключено в обеих версиях. Переход на 1.1 меняет неявные типы, например yes и даты. Директива %YAML должна совпадать с выбором. Пример слияния показывает замену ввода и включение настройки до применения.

02

Перейдите к определению или использованию

Нажмите позицию на любом конце связи, чтобы выделить точную строку и столбец исходника. На странице графа 50 строк, включая неиспользуемые определения. Неразрешённые ссылки и обнаруженные рёбра циклов остаются после ошибки; при превышении лимита граф может быть частичным.

03

Примените проверенную замену

Использование результата, примеры, очистка и импорт файла сначала показывают предпросмотр с числом строк. После применения доступна одна отмена, восстанавливающая ввод, настройки, вывод и диагностику. Вручную можно запускать через Ctrl/Cmd+Enter; автоматически анализ начинается через 350 мс после редактирования. Устаревший результат нельзя экспортировать.

Ссылки, слияние и сохранение типов

Отделите структуру YAML от правил конкретного приложения

Реальные позиции в исходнике

Лексер и синтаксическое дерево находят свойства якорей и узлы псевдонимов, включая якорь на отдельной строке или строковом ключе. Текст в кавычках и многострочных блоках остаётся данными. Для каждого документа создаётся отдельная таблица определений.

Цикл можно исследовать без раскрытия

Сначала граф проверяется на рекурсивные зависимости. Самоссылка может быть допустимой в YAML, хотя конечного текста без псевдонимов для неё нет. Инструмент указывает проблемное ребро, блокирует весь вывод и сохраняет собранные связи для диагностики.

Поверхностное слияние с явным приоритетом

Источниками могут быть карты, псевдонимы карт и последовательности карт. Более ранние источники задают значения по умолчанию; явные ключи заменяют их независимо от своей позиции. Вложенные объекты заменяются целиком, рекурсивного слияния и объединения последовательностей нет.

Сохранение представления скаляров

Раскрытие копирует узлы синтаксического дерева без промежуточного JSON. Большие целые, запись чисел, неконечные числа с плавающей точкой и токены timestamp сохраняют исходное представление. Перед экспортом результат снова разбирается по той же схеме и проходит проверку сохранения значений.

Границы версий, типов и раскрытия

Экспортируется только полный конечный результат

Версия задаётся явно
Используются основная схема YAML 1.2 или схема 1.1 библиотеки yaml 2.9.0. При конфликте %YAML с выбранной версией операция останавливается, а не меняет настройку. Каждый выходной документ объявляет выбранную версию. Слияние — отдельное расширение, изначально выключенное даже для 1.1.
Ключ слияния и строка — разные случаи
При включённом расширении обычный << и !!merge выполняют слияние карт. Несколько ключей слияния допускаются как расширение движка и обрабатываются в порядке исходника: ранняя карта выигрывает, явный ключ всегда имеет приоритет. << в кавычках и !!str << остаются обычными строками и выводятся в кавычках. Без расширения обычный << тоже строковый ключ; повторные обычные ключи отклоняются.
Строковые ключи и ограниченный набор тегов
Ключ должен разрешаться в строку; псевдоним якоря со строковым значением допустим. Числовые, логические, null и составные ключи отклоняются без преобразования в текст. Поддерживаются основные теги, timestamp и binary. Для binary нужен канонический Base64 с заполнением. Неизвестные теги и коллекции set, omap, pairs останавливают раскрытие; пользовательские конструкторы не исполняются.
Сохраняются значения, а не исходные байты
Вывод убирает синтаксис якорей и псевдонимов, комментарии и исходные пробелы. Числа и timestamp сохраняют исходные токены без округления через Number или Date. Особые числа и двоичные значения остаются типами YAML. Кавычки и оформление строк могут измениться. Проверяйте результат перед применением; исходный файл автоматически не перезаписывается.
Ссылки ограничены документом
Псевдоним использует ближайшее предшествующее определение в своём документе. Ссылка вперёд вызывает ошибку. Повторное имя якоря допустимо и не равнозначно повторному ключу карты. Не вычисляются подстановки Compose, GitLab extends и !reference, шаблоны Helm, JSON $ref, удалённые include или импорт других файлов.
Лимиты учитывают каждый путь раскрытия
Ввод ограничен 500 000 единиц UTF-16 и 2 МБ UTF-8: до 100 документов, 50 000 исходных узлов и глубины 100. При раскрытии допускается 50 000 посещений, включая повторные псевдонимы, перекрытые источники слияния и ключи слияния. Длины исходных и раскрытых скаляров делят бюджет 2 млн единиц работы; итоговый текст отдельно ограничен 2 млн символов. Граф — до 5 000 строк, Worker — до 5 секунд. Любая ошибка блокирует весь экспорт: обрезанный YAML не выдаётся.

Вопросы про якоря YAML

Повторные имена, включаемые файлы и последовательности

Можно ли повторно использовать имя якоря?

Да. Инструмент различает якоря YAML по позиции определения. Псевдоним использует ближайшее предшествующее определение своего имени в текущем документе. Определение ниже по тексту или в другом документе не может стать его целью.

Можно ли использовать якоря из файла Compose include?

Область действия псевдонима — один документ YAML. Этот инструмент не обрабатывает Compose include, подстановку переменных или другие правила приложения. Простое соединение текстов не делает ссылку между документами допустимой. Для совместных настроек разных файлов нужны механизмы самого приложения.

Ключи слияния включены по умолчанию?

Нет, расширение включается отдельной настройкой в обеих версиях YAML. Явные ключи важнее унаследованных, а среди карт последовательности выигрывает ранняя. Слияние поверхностное. << в кавычках остаётся строкой, а пример слияния предлагает предварительно проверить включение опции.

Почему в результате остались символы & или *?

Они могут быть частью строкового значения, а не синтаксисом ссылки. Инструмент определяет ссылки по дереву разбора. Успешный результат не содержит узлов якорей или псевдонимов. При неизвестной цели, цикле или превышении лимита экспорт блокируется, а не выдаёт недораскрытый текст.

Можно ли задать якорь для массива?

Да. Псевдоним раскрывает всю последовательность как значение или используется как один элемент другой последовательности. Это не вставка её элементов и не конкатенация массивов. Если встречается цикл или исчерпан бюджет работы, конечный результат не экспортируется.

Есть пример ссылки или значения, который стоит проверить?

Проверьте якоря YAML

Проверьте якоря YAML по исходным позициям и просмотрите раскрытые значения, прежде чем заменить конфигурацию.

Раскрытую конфигурацию всё равно нужно проверить в целевом приложении.