This is an automated email from the ASF dual-hosted git repository.

gregdove pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/develop by this push:
     new e0dcd7b  Addresses #947, swapped to use of String.trim() selectively 
for areas where needed.
e0dcd7b is described below

commit e0dcd7b199ac559709f9a35b301e49c75aaaa6d3
Author: greg-dove <[email protected]>
AuthorDate: Tue Nov 24 16:16:36 2020 +1300

    Addresses #947, swapped to use of String.trim() selectively for areas where 
needed.
---
 frameworks/projects/XML/src/main/royale/XML.as     | 20 +++++++++--------
 .../flexUnitTests/xml/XMLTesterGeneralTest.as      | 25 +++++++++++++++++++++-
 2 files changed, 35 insertions(+), 10 deletions(-)

diff --git a/frameworks/projects/XML/src/main/royale/XML.as 
b/frameworks/projects/XML/src/main/royale/XML.as
index 2dd7cf5..27c7103 100644
--- a/frameworks/projects/XML/src/main/royale/XML.as
+++ b/frameworks/projects/XML/src/main/royale/XML.as
@@ -468,11 +468,7 @@ package
                        return false;
                }
                
-               static private function trimXMLWhitespace(value:String):String
-               {
-                       return value.replace(/^\s+|\s+$/gm,'');
-               }
-               
+
                /**
                 * [static] Returns an object with the following properties set 
to the default values: ignoreComments, ignoreProcessingInstructions, 
ignoreWhitespace, prettyIndent, and prettyPrinting.
                 * @return
@@ -568,10 +564,11 @@ package
                        // _children = [];
                        if(xml != null)
                        {
-                               var xmlStr:String = ignoreWhitespace ? 
trimXMLWhitespace("" + xml) : "" + xml;
+                               var xmlStr:String = "" + xml;
                                if(xmlStr.indexOf("<") == -1)
                                {
                                        // _nodeKind = TEXT;
+                                       if (ignoreWhitespace) xmlStr = 
xmlStr.trim();
                                        _value = xmlStr;
                                }
                                else
@@ -634,7 +631,7 @@ package
                        
                        var decl:String = xmlDecl.exec(xml);
                        if (decl) xml = xml.replace(decl,'');
-                       if (ignoreWhitespace) xml = trimXMLWhitespace( xml) ;
+                       if (ignoreWhitespace) xml = xml.trim();
                        //various node types not supported directly
                        //when parsing, always wrap (e4x ref p34, 'Semantics' 
of e4x-Ecma-357.pdf)
                        //custom: support alternate default xml namespace when 
parsing:
@@ -917,7 +914,12 @@ package
                                        child = xmlFromStringable(child);
                                }
                        }
-                       
+                       if (child is XML  && (child as XML).getNodeRef() == 
ATTRIBUTE){
+                               //convert to text node
+                               var xml:XML= new XML();
+                               xml._value = child.toString();
+                               child = xml;
+                       }
                        appendChildInternal(child);
                        //normalize seems not correct here:
                        //normalize();
@@ -3067,7 +3069,7 @@ package
                        {
                                if(prettyPrinting)
                                {
-                                       var v:String = 
trimXMLWhitespace(_value);
+                                       var v:String = (_value+'').trim();
                                        if (v.indexOf('<![CDATA[') == 0) {
                                                return indent + v;
                                        }
diff --git 
a/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLTesterGeneralTest.as
 
b/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLTesterGeneralTest.as
index d4663a5..3938c8e 100644
--- 
a/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLTesterGeneralTest.as
+++ 
b/frameworks/projects/XML/src/test/royale/flexUnitTests/xml/XMLTesterGeneralTest.as
@@ -156,7 +156,30 @@ package flexUnitTests.xml
             assertEquals( xml3.foo.@boo,'boo', 'xml3.foo.@boo should be 
"boo"');
 
         }
-        
+
+        [Test]
+        public function testWhitespaceVariants():void{
+            XML.ignoreWhitespace = false;
+
+            var test:XML = new XML("    test   \n ");
+            assertEquals(test.toString().length,13, 'unexpected length')
+            XML.ignoreWhitespace = true;
+            test = new XML("    test   \n ");
+            assertEquals(test.toString().length,4, 'unexpected length')
+
+            XML.ignoreWhitespace = false;
+            var xml1:XML = new XML('<mynode red="value1"\r\n green="value2" 
blue="value3" \r\nyellow="value4" />');
+            assertEquals(xml1.toXMLString().length,67, 'unexpected length');
+            XML.ignoreWhitespace = true;
+            xml1 = new XML('<mynode red="value1"\r\n green="value2" 
blue="value3" \r\nyellow="value4" />');
+            assertEquals(xml1.toXMLString().length,67, 'unexpected length');
+            XML.ignoreWhitespace = false;
+            xml1 = new XML('    \r\n<mynode red="value1"\r\n green="value2" 
blue="value3" \r\nyellow="value4" />\r\n');
+            assertEquals(xml1.toXMLString().length,67, 'unexpected length');
+            XML.ignoreWhitespace = true;
+            xml1 = new XML('    \r\n<mynode red="value1"\r\n green="value2" 
blue="value3" \r\nyellow="value4" />\r\n');
+            assertEquals(xml1.toXMLString().length,67, 'unexpected length');
+        }
        
         
         [Test]

Reply via email to