From: Alan Date: Thu, 6 Jan 2022 09:21:59 +0000 (+0800) Subject: Roo/htmleditor/Tidy.js X-Git-Url: http://git.roojs.org/?p=roojs1;a=commitdiff_plain;h=fe1fe139db99c364ec0946c3b7a2ec7d84d4b4ea Roo/htmleditor/Tidy.js --- diff --git a/Roo/htmleditor/Tidy.js b/Roo/htmleditor/Tidy.js index c13a5a7b81..b89d4347d8 100644 --- a/Roo/htmleditor/Tidy.js +++ b/Roo/htmleditor/Tidy.js @@ -24,122 +24,13 @@ Roo.htmleditor.Tidy.toString = function(node) Roo.htmleditor.Tidy.prototype = { - wrap : function(s) { - return s.replace(/\n/g, " ").replace(/(?![^\n]{1,80}$)([^\n]{1,80})\s/g, '$1\n'); - }, + tidy : function(node, indent) { - if (node.nodeType == 3) { - // text. - - - return indent === false ? node.nodeValue : this.wrap(node.nodeValue.trim()).split("\n").join("\n" + indent); - - - } - - if (node.nodeType != 1) { - return ''; - } - - - - if (node.tagName == 'BODY') { - - return this.cn(node, ''); - } - - // Prints the node tagName, such as , , etc - var ret = "<" + node.tagName + this.attr(node) ; - - // elements with no children.. - if (['IMG', 'BR', 'HR', 'INPUT'].indexOf(node.tagName) > -1) { - return ret + '/>'; - } - ret += '>'; - - - var cindent = indent === false ? '' : (indent + ' '); - // tags where we will not pad the children.. (inline text tags etc..) - if (['PRE', 'TEXTAREA', 'TD', 'A', 'SPAN', 'B', 'I', 'S'].indexOf(node.tagName) > -1) { // or code? - cindent = false; - - - } - - var cn = this.cn(node, cindent ); - - return ret + cn + ''; - - }, - cn: function(node, indent) - { - var ret = []; - - var ar = Array.from(node.childNodes); - for (var i = 0 ; i < ar.length ; i++) { - - - - if (indent !== false // indent==false preservies everything - && i > 0 - && ar[i].nodeType == 3 - && ar[i].nodeValue.length > 0 - && ar[i].nodeValue.match(/^\s+/) - ) { - if (ret.length && ret[ret.length-1] == "\n" + indent) { - ret.pop(); // remove line break from last? - } - - ret.push(" "); // add a space if i'm a text item with a space at the front, as tidy will strip spaces. - } - if (indent !== false - && ar[i].nodeType == 1 // element - and indent is not set... - ) { - ret.push("\n" + indent); - } - - ret.push(this.tidy(ar[i], indent)); - // text + trailing indent - if (indent !== false - && ar[i].nodeType == 3 - && ar[i].nodeValue.length > 0 - && ar[i].nodeValue.match(/\s+$/) - ){ - ret.push("\n" + indent); - } - - - - - } - // what if all text? - - - return ret.join(''); - }, - - - attr : function(node) - { - var attr = []; - for(i = 0; i < node.attributes.length;i++) { - - // skip empty values? - if (!node.attributes.item(i).value.length) { - continue; - } - attr.push( node.attributes.item(i).name + '="' + - Roo.util.Format.htmlEncode(node.attributes.item(i).value) + '"' - ); - } - return attr.length ? (' ' + attr.join(' ') ) : ''; - - } - + } } \ No newline at end of file