Краткий ответ: да и нет.
REXML использует различные средства форматирования в зависимости от значения, указанного вами для indent
. Если вы оставите значение по умолчанию -1, он будет использовать REXML::Formatters::Default
. Если вы дадите ему значение, подобное 4, оно будет использовать REXML::Formatters::Pretty
. У симпатичного форматера есть логика для переноса строк (хотя, похоже, он переносится на 80, а не на 166), когда имеешь дело с текстом (не тегами или атрибутами). Например, содержимое
<p> a paragraph tag </p>
будет заключено в 80 символов, но
<a-tag with='a' long='list' of='attributes'/>
не будет упакован.
В любом случае, 80 жестко запрограммирован в rexml/formatters/pretty.rb
и не настраивается. И если вы используете форматтер по умолчанию без отступа, то это в основном простой дамп без добавленных разрывов строк. Вы можете попробовать переходный форматер (см. Документацию для Document.write
), но он не работает в какой-то версии ruby и может потребовать взлома кода. В любом случае, это, вероятно, не то, что вы хотите.
Вы можете попробовать взглянуть на Builder::XmlMarkup
из камня строителя.