From 61143e615dfb903cd11c11539b7259cc4bc8b9fe Mon Sep 17 00:00:00 2001
From: =?utf8?q?Aleksander=20=C5=81ukasz?=
 <aleksander.lukasz@nowoczesnapolska.org.pl>
Date: Thu, 18 Jul 2013 15:19:52 +0200
Subject: [PATCH] Don't serialize wlxml meta attribute if it's empty

---
 modules/documentCanvas/canvas/canvas.test3.js    | 11 +++++++++++
 modules/documentCanvas/canvas/documentElement.js |  3 ++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/modules/documentCanvas/canvas/canvas.test3.js b/modules/documentCanvas/canvas/canvas.test3.js
index 76ece55..2017a8a 100644
--- a/modules/documentCanvas/canvas/canvas.test3.js
+++ b/modules/documentCanvas/canvas/canvas.test3.js
@@ -1108,7 +1108,18 @@ describe('Canvas', function() {
 
             expect($xmlOut.attr('a')).to.equal('1');
             expect($xmlOut.attr('xmlns:dcterms')).to.equal('http://purl.org/dc/terms/');
+        });
+
+        it('doesn\' serialize meta attribute if its empty', function() {
+            var c;
+
+            c = canvas.fromXML('<section class="uri" meta-uri="some.uri"></section>');
+            c.doc().setWlxmlMetaAttr('uri', '');
+            expect($(c.toXML()).attr('meta-uri')).to.equal(undefined, 'overriding attribute with zero length string');
 
+            c = canvas.fromXML('<section class="uri"></section>');
+            c.doc().setWlxmlMetaAttr('uri', '');
+            expect($(c.toXML()).attr('meta-uri')).to.equal(undefined, 'setting attribute to zero length string');
         });
 
         describe('formatting output xml', function() {
diff --git a/modules/documentCanvas/canvas/documentElement.js b/modules/documentCanvas/canvas/documentElement.js
index 9c2749e..94b8422 100644
--- a/modules/documentCanvas/canvas/documentElement.js
+++ b/modules/documentCanvas/canvas/documentElement.js
@@ -163,7 +163,8 @@ $.extend(DocumentNodeElement.prototype, {
             node.attr('class', this.getWlxmlClass());
         var meta = this.getWlxmlMetaAttrs();
         meta.forEach(function(attr) {
-            node.attr('meta-' + attr.name, attr.value);
+            if(attr.value)
+                node.attr('meta-' + attr.name, attr.value);
         });
         _.keys(this.data('other-attrs') || {}).forEach(function(key) {
             node.attr(key, this.data('other-attrs')[key]);
-- 
2.20.1