X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/0214643f72c6aaa8e85eaba2ad27f2ca03ca6401..bb42027c8fd9ed17234381d3c366c387a20592f0:/modules/documentCanvas/transformations.js diff --git a/modules/documentCanvas/transformations.js b/modules/documentCanvas/transformations.js index cd20d2b..79c28b6 100644 --- a/modules/documentCanvas/transformations.js +++ b/modules/documentCanvas/transformations.js @@ -1,5 +1,7 @@ define(['libs/jquery-1.9.1.min'], function($) { + 'use strict'; + var transformations = {}; transformations.fromXML = { @@ -24,17 +26,31 @@ define(['libs/jquery-1.9.1.min'], function($) { for(var i = 0; i < this.attributes.length; i++) { var attr = this.attributes.item(i); var value = attr.name === 'class' ? attr.value.replace(/\./g, '-') : attr.value; - toret.attr('wlxml-' + attr.name, value) + toret.attr('wlxml-' + attr.name, value); } toret.append(currentTag.contents()); return toret; }); }); - } + }; transform(toBlock, 'div'); transform(toInline, 'span'); + toret.find(":not(iframe)").addBack().contents().filter(function() { + return this.nodeType == 3;} ).each(function() { + var n = $(this); + var hasText = /\S/g.test(n.text()); + if(!hasText) { + n.remove(); + return; + } + var startSpace = /\s/g.test(n.text().substr(0,1)); + var endSpace = /\s/g.test(n.text().substr(-1)) && n.text().length > 1; + var trimmed = $.trim(n.text()); + n.get(0).data = (startSpace ? ' ' : '') + trimmed + (endSpace ? ' ' : ''); + }); + return toret.children(); }, getMetaData: function(xml) { @@ -42,21 +58,21 @@ define(['libs/jquery-1.9.1.min'], function($) { $(xml).find('metadata').children().each(function() { var node = $(this); toret[this.nodeName.split(':')[1].toLowerCase()] = node.text(); - }) + }); return toret; }, getDocumentDescription: function(xml) { return { HTMLTree: this.getHTMLTree(xml), metadata: this.getMetaData(xml) - } + }; } - } + }; transformations.toXML = { - getXML: function(documentDescription) { + getXML: function(body) { - var inner = $(documentDescription.HTMLTree); + var inner = body.clone(); var toret = $('
'); toret.append(inner); @@ -67,41 +83,24 @@ define(['libs/jquery-1.9.1.min'], function($) { for(var i = 0; i < this.attributes.length; i++) { var attr = this.attributes.item(i); - var split = attr.name.split('-') + var split = attr.name.split('-'); console.log(split); if(split[0] !== 'wlxml' || (split.length > 1 && split[1] === 'tag')) continue; var wlxmlName = split.splice(1).join('-'); var value = wlxmlName === 'class' ? attr.value.replace(/-/g, '.') : attr.value; console.log(name + ': ' + value); - toret.attr(wlxmlName, value); + if(value.length && value.length > 0) + toret.attr(wlxmlName, value); } toret.append(div.contents()); return toret; }); - - var meta = $('\n'); - _.each(_.keys(documentDescription.metadata), function(key) { - meta.append('\n\t' + documentDescription.metadata[key] + ''); - }); - meta.append('\n'); - - var metadata = toret.find('metadata'); - if(metadata.length === 0) { - var section = toret.find('section'); - section = section.length ? $(section[0]) : null; - if(section) { - section.prepend(meta) - } - } else { - metadata.replaceWith(meta); - } - - + return vkbeautify.xml(toret.html()); } - } + }; return transformations;