From d3f730e2ba060b0d2b26d03b55088f266fefb1b9 Mon Sep 17 00:00:00 2001 From: John McLear Date: Wed, 13 Feb 2013 18:01:15 +0000 Subject: [PATCH] fix various issues dont stop random *'s appearing --- src/node/utils/ExportHelper.js | 52 -------------------------------- src/node/utils/ExportHtml.js | 55 +++++++++++++++++++++++++++++++++- src/node/utils/ExportTxt.js | 19 +++++------- 3 files changed, 62 insertions(+), 64 deletions(-) diff --git a/src/node/utils/ExportHelper.js b/src/node/utils/ExportHelper.js index 030b0dc7..a939a8b6 100644 --- a/src/node/utils/ExportHelper.js +++ b/src/node/utils/ExportHelper.js @@ -47,58 +47,6 @@ exports.getPadPlainText = function(pad, revNum){ return pieces.join(''); } -// copied from ACE -exports._processSpaces = function(s){ - var doesWrap = true; - if (s.indexOf("<") < 0 && !doesWrap){ - // short-cut - return s.replace(/ /g, ' '); - } - var parts = []; - s.replace(/<[^>]*>?| |[^ <]+/g, function (m){ - parts.push(m); - }); - if (doesWrap){ - var endOfLine = true; - var beforeSpace = false; - // last space in a run is normal, others are nbsp, - // end of line is nbsp - for (var i = parts.length - 1; i >= 0; i--){ - var p = parts[i]; - if (p == " "){ - if (endOfLine || beforeSpace) parts[i] = ' '; - endOfLine = false; - beforeSpace = true; - } - else if (p.charAt(0) != "<"){ - endOfLine = false; - beforeSpace = false; - } - } - // beginning of line is nbsp - for (var i = 0; i < parts.length; i++){ - var p = parts[i]; - if (p == " "){ - parts[i] = ' '; - break; - } - else if (p.charAt(0) != "<"){ - break; - } - } - } - else - { - for (var i = 0; i < parts.length; i++){ - var p = parts[i]; - if (p == " "){ - parts[i] = ' '; - } - } - } - return parts.join(''); -} - exports._analyzeLine = function(text, aline, apool){ var line = {}; diff --git a/src/node/utils/ExportHtml.js b/src/node/utils/ExportHtml.js index a54f566c..585694d4 100644 --- a/src/node/utils/ExportHtml.js +++ b/src/node/utils/ExportHtml.js @@ -22,7 +22,6 @@ var ERR = require("async-stacktrace"); var Security = require('ep_etherpad-lite/static/js/security'); var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks'); var getPadPlainText = require('./ExportHelper').getPadPlainText -var _processSpaces = require('./ExportHelper')._processSpaces; var _analyzeLine = require('./ExportHelper')._analyzeLine; var _encodeWhitespace = require('./ExportHelper')._encodeWhitespace; @@ -543,3 +542,57 @@ function _findURLs(text) return urls; } + + +// copied from ACE +function _processSpaces(s){ + var doesWrap = true; + if (s.indexOf("<") < 0 && !doesWrap){ + // short-cut + return s.replace(/ /g, ' '); + } + var parts = []; + s.replace(/<[^>]*>?| |[^ <]+/g, function (m){ + parts.push(m); + }); + if (doesWrap){ + var endOfLine = true; + var beforeSpace = false; + // last space in a run is normal, others are nbsp, + // end of line is nbsp + for (var i = parts.length - 1; i >= 0; i--){ + var p = parts[i]; + if (p == " "){ + if (endOfLine || beforeSpace) parts[i] = ' '; + endOfLine = false; + beforeSpace = true; + } + else if (p.charAt(0) != "<"){ + endOfLine = false; + beforeSpace = false; + } + } + // beginning of line is nbsp + for (var i = 0; i < parts.length; i++){ + var p = parts[i]; + if (p == " "){ + parts[i] = ' '; + break; + } + else if (p.charAt(0) != "<"){ + break; + } + } + } + else + { + for (var i = 0; i < parts.length; i++){ + var p = parts[i]; + if (p == " "){ + parts[i] = ' '; + } + } + } + return parts.join(''); +} + diff --git a/src/node/utils/ExportTxt.js b/src/node/utils/ExportTxt.js index 30673a98..05847f16 100644 --- a/src/node/utils/ExportTxt.js +++ b/src/node/utils/ExportTxt.js @@ -25,7 +25,6 @@ var ERR = require("async-stacktrace"); var Security = require('ep_etherpad-lite/static/js/security'); var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks'); var getPadPlainText = require('./ExportHelper').getPadPlainText; -var _processSpaces = require('./ExportHelper')._processSpaces; var _analyzeLine = require('./ExportHelper')._analyzeLine; var _encodeWhitespace = require('./ExportHelper')._encodeWhitespace; @@ -204,12 +203,12 @@ function getTXTFromAtext(pad, atext, authorColors) { if (propVals[i] === ENTER || propVals[i] === STAY) { - emitOpenTag(i); propVals[i] = true; } } // propVals is now all {true,false} again } // end if (propChanged) + var chars = o.chars; if (o.lines) { @@ -217,16 +216,15 @@ function getTXTFromAtext(pad, atext, authorColors) } var s = taker.take(chars); - - //removes the characters with the code 12. Don't know where they come - //from but they break the abiword parser and are completly useless - s = s.replace(String.fromCharCode(12), ""); + + // removes the characters with the code 12. Don't know where they come + // from but they break the abiword parser and are completly useless + // s = s.replace(String.fromCharCode(12), ""); // remove * from s, it's just not needed on a blank line.. This stops // plugins from being able to display * at the beginning of a line - s = s.replace("*", ""); - - // assem.append(_encodeWhitespace(Security.escapeHTML(s))); + // s = s.replace("*", ""); // Then remove it + assem.append(_encodeWhitespace(s)); } // end iteration over spans in line @@ -242,8 +240,7 @@ function getTXTFromAtext(pad, atext, authorColors) } // end processNextChars processNextChars(text.length - idx); - - return _processSpaces(assem.toString()); + return(assem.toString()); } // end getLineHTML var pieces = [css];