From 90497ba355e3ec1ec2029410393a9e6394a7b427 Mon Sep 17 00:00:00 2001 From: Eric Cunningham Date: Mon, 6 Jan 2025 19:04:15 -0800 Subject: [PATCH 1/3] Update transitive.rb This makes Transitive.rb do exactly what the docs say it should do. It outputs Pretty xml except for text nodes which are left untouched. --- lib/rexml/formatters/transitive.rb | 39 +----------------------------- 1 file changed, 1 insertion(+), 38 deletions(-) diff --git a/lib/rexml/formatters/transitive.rb b/lib/rexml/formatters/transitive.rb index 5ff51e10..48d44e6d 100644 --- a/lib/rexml/formatters/transitive.rb +++ b/lib/rexml/formatters/transitive.rb @@ -12,44 +12,7 @@ module Formatters # Note that this is only useful if the original XML is not already # formatted. Since this formatter does not alter whitespace nodes, the # results of formatting already formatted XML will be odd. - class Transitive < Default - def initialize( indentation=2, ie_hack=false ) - @indentation = indentation - @level = 0 - @ie_hack = ie_hack - end - - protected - def write_element( node, output ) - output << "<#{node.expanded_name}" - - node.attributes.each_attribute do |attr| - output << " " - attr.write( output ) - end unless node.attributes.empty? - - output << "\n" - output << ' '*@level - if node.children.empty? - output << " " if @ie_hack - output << "/" - else - output << ">" - # If compact and all children are text, and if the formatted output - # is less than the specified width, then try to print everything on - # one line - @level += @indentation - node.children.each { |child| - write( child, output ) - } - @level -= @indentation - output << "" - end - + class Transitive < REXML::Formatters::Pretty def write_text( node, output ) output << node.to_s() end From 7207c71019d011974e726f1c048a39b035239b13 Mon Sep 17 00:00:00 2001 From: Eric Cunningham Date: Mon, 6 Jan 2025 19:10:42 -0800 Subject: [PATCH 2/3] Update transitive.rb --- lib/rexml/formatters/transitive.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rexml/formatters/transitive.rb b/lib/rexml/formatters/transitive.rb index 48d44e6d..b422edac 100644 --- a/lib/rexml/formatters/transitive.rb +++ b/lib/rexml/formatters/transitive.rb @@ -12,7 +12,7 @@ module Formatters # Note that this is only useful if the original XML is not already # formatted. Since this formatter does not alter whitespace nodes, the # results of formatting already formatted XML will be odd. - class Transitive < REXML::Formatters::Pretty + class Transitive < Pretty def write_text( node, output ) output << node.to_s() end From 702b3ca83dec36b89715fd39f47bd080af43f307 Mon Sep 17 00:00:00 2001 From: Eric Cunningham Date: Tue, 7 Jan 2025 13:09:54 -0800 Subject: [PATCH 3/3] Update transitive.rb added #strip eliminated added newlines This formatter was adding newline characters so the Text nodes grew every time you saved/wrote them. Adding #strip fixes it. I've been working with it and it works perfectly. --- lib/rexml/formatters/transitive.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rexml/formatters/transitive.rb b/lib/rexml/formatters/transitive.rb index b422edac..d4643dee 100644 --- a/lib/rexml/formatters/transitive.rb +++ b/lib/rexml/formatters/transitive.rb @@ -14,7 +14,7 @@ module Formatters # results of formatting already formatted XML will be odd. class Transitive < Pretty def write_text( node, output ) - output << node.to_s() + output << node.to_s().strip end end end