serialize text nodes correctly

pull/1/head
ansuz 9 years ago
parent 302b8c5f04
commit df22c246c4

@ -24,7 +24,8 @@ define([], function () {
return callOnHyperJSON(child, cb); return callOnHyperJSON(child, cb);
} else if (typeof (child) === 'string') { } else if (typeof (child) === 'string') {
// string nodes have leading and trailing quotes // string nodes have leading and trailing quotes
return child.replace(/(^"|"$)/g,""); // don't strip them!
return child; //child.replace(/(^"|"$)/g,"");
} else { } else {
// the above branches should cover all methods // the above branches should cover all methods
// if we hit this, there is a problem // if we hit this, there is a problem

@ -32,12 +32,17 @@
<!-- put in weird HTML that might cause problems --> <!-- put in weird HTML that might cause problems -->
<div id="target"><p class=" alice bob charlie has.dot" id="bang">pewpewpew</p></div> <div id="target"><p class=" alice bob charlie has.dot" id="bang">pewpewpew</p></div>
<h2>Test 1</h2>
<h3>paragraph text</h3>
<!-- -->
<div id="quot"><p>"pewpewpew"</p></div>
<hr> <hr>
<h2>Test 2</h2> <h2>Test 2</h2>
<h3>XWiki Macros</h3> <h3>XWiki Macros</h3>
<!-- Can we serialize XWiki Macros? --> <!-- Can we serialize XWiki Macros? -->
<div id="widget"><div data-cke-widget-id="0" tabindex="-1" data-cke-widget-wrapper="1" data-cke-filter="off" class="cke_widget_wrapper cke_widget_block" data-cke-display-name="macro:velocity" contenteditable="false"><div class="macro cke_widget_element" data-macro="startmacro:velocity|-||-|Here is a macro" data-cke-widget-data="%7B%22classes%22%3A%7B%22macro%22%3A1%7D%7D" data-cke-widget-upcasted="1" data-cke-widget-keep-attr="0" data-widget="xwiki-macro"><p>Here is a macro</p></div><span style='background: rgba(220, 220, 220, 0.5) url("/common/cryptofist.png") repeat scroll 0% 0%; top: -15px; left: 0px; display: block;' class="cke_reset cke_widget_drag_handler_container"><img title="Click and drag to move" src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" data-cke-widget-drag-handler="1" class="cke_reset cke_widget_drag_handler" height="15" width="15"></span></div></div> <div id="widget"><div data-cke-widget-id="0" tabindex="-1" data-cke-widget-wrapper="1" data-cke-filter="off" class="cke_widget_wrapper cke_widget_block" data-cke-display-name="macro:velocity" contenteditable="false"><div class="macro cke_widget_element" data-macro="startmacro:velocity|-||-|Here is a macro" data-cke-widget-data="%7B%22classes%22%3A%7B%22macro%22%3A1%7D%7D" data-cke-widget-upcasted="1" data-cke-widget-keep-attr="0" data-widget="xwiki-macro"><p>Here is a macro</p></div><span style='background: rgba(220, 220, 220, 0.5) url("/customize/cryptofist_small.png") repeat scroll 0% 0%; top: -15px; left: 0px; display: block;' class="cke_reset cke_widget_drag_handler_container"><img title="Click and drag to move" src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" data-cke-widget-drag-handler="1" class="cke_reset cke_widget_drag_handler" height="15" width="15"></span></div></div>
<hr> <hr>

@ -46,14 +46,15 @@ define([
var success = cloned.outerHTML === target.outerHTML; var success = cloned.outerHTML === target.outerHTML;
if (!success) { if (!success) {
var op = TextPatcher.diff(target.outerHTML, cloned.outerHTML);
window.DEBUG = { window.DEBUG = {
error: "Expected equality between A and B", error: "Expected equality between A and B",
A: target.outerHTML, A: target.outerHTML,
B: cloned.outerHTML, B: cloned.outerHTML,
target: target, diff: op
diff: TextPatcher.diff(target.outerHTML, cloned.outerHTML)
}; };
console.log(JSON.stringify(window.DEBUG, null, 2)); console.log(JSON.stringify(window.DEBUG, null, 2));
TextPatcher.log(op);
} }
return success; return success;
@ -62,6 +63,7 @@ define([
[ '#target', [ '#target',
'#widget', '#widget',
'#quot',
].forEach(function (sel) { ].forEach(function (sel) {
roundTrip($(sel)[0]); roundTrip($(sel)[0]);
}); });

Loading…
Cancel
Save