Roo/htmleditor/TidyWriter.js
[roojs1] / Roo / htmleditor / TidyWriter.js
index e9f75d6..3a46ac4 100644 (file)
@@ -78,25 +78,29 @@ Roo.htmleditor.TidyWriter.prototype = {
             i_inline = false;
         }
 
-        var indentstr = i_inline || this.in_pre ? '' : this.indentstr;
+        var indentstr =  this.indentstr;
         
         // e_inline = elements that can be inline, but still allow \n before and after?
         // only 'BR' ??? any others?
-        var e_inline = name == 'BR' ? false : this.in_inline;
         
         // ADD LINE BEFORE tage
         if (!this.in_pre) {
             if (in_inline) {
                 //code
-                if (is_br) {
+                if (name == 'BR') {
                     this.addLine();
                 } else if (this.lastElementEndsWS()) {
                     this.addLine();
+                } else{
+                    // otherwise - no new line. (and dont indent.)
+                    indentstr = '';
                 }
-                // otherwise - no new line.
+                
             } else {
                 this.addLine();
             }
+        } else {
+            indentstr = '';
         }
         
         this.html.push(indentstr + '<', name.toLowerCase());
@@ -205,6 +209,26 @@ Roo.htmleditor.TidyWriter.prototype = {
             return;
         }
         if (this.in_pre || this.in_inline) {
+            
+            if (this.in_inline) {
+                text = text.replace(/\s/g,' ') // all line breaks to ' '
+                    .replace(/\s+/,' ')  // all white space to single white space
+                // if next tag is '<BR>', then we can trim right..
+                if (node.nextSibling &&
+                    node.nextSibling.nodeType == 1 &&
+                    node.nextSibling.nodeName == 'BR' )
+                {
+                    text = text.replace(/\s+$/g,'');
+                }
+                // if previous tag was a BR, we can also trim..
+                if (node.previousSibling &&
+                    node.previousSibling.nodeType == 1 &&
+                    node.previousSibling.nodeName == 'BR' )
+                {
+                    text = text.replace(/^\s+/g,'');
+                }
+                
+            }
             this.html[this.html.length] =  text;
             return;   
         }