Причиной появления новых строк в данных, загружаемых из YAML, является то, что в соответствии со спецификацией YAML :
Сворачивание позволяет разбивать длинные строки везде, где отделяется один пробелдва непробельных символа.
И, поскольку перед from bar
есть пробелы, новая строка на предыдущей строке не может быть в «сгибе» и является жесткой новой строкой.
Чтобы «решить» это только с помощью YAML, вы можете попробовать использовать скаляры простого стиля , как уже указывалось @flyx, но имейте в виду, что есть несколько ограничений на простые скаляры, которые не применяются к сложенным скалярам.Они могут не относиться к вашему примеру, но, вероятно, применимы, когда у вас есть настоящий синтаксис SQL.
Еще одна вещь, которую вы могли бы сделать, это не делать отступ после сгибов:
foo: >
select foo
from bar
where ok
join left
select baz
from boo
, который на самом деле не делает вещи более читабельными, но не имеет ограничений, которые имеют простые скаляры стиля.
Наилучшим решением при сохранении максимальной читаемости будет добавление тега и использование скалярного литерального стиля
foo: !flatten |
select foo
from bar
where ok
join left
select baz
from boo
и загрузка объекта для тега !flatten
, развернитесоответствующие строки во время загрузки (т. е. заменить новую строку, за которой следуют пробелы, одной новой строкой).
Хотя использование тегов является ИМО лучшим решением, оно расширяет термин «только YAML» за пределы разумного.