From b53d709d888332da35d991ef449ddfc60633273f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Aleksander=20=C5=81ukasz?= Date: Wed, 14 May 2014 15:40:13 +0200 Subject: [PATCH] wlxml: Allow for setting non-function properties via extension --- src/wlxml/wlxml.js | 4 +++- src/wlxml/wlxml.test.js | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/wlxml/wlxml.js b/src/wlxml/wlxml.js index 0505116..bbd6233 100644 --- a/src/wlxml/wlxml.js +++ b/src/wlxml/wlxml.js @@ -58,7 +58,9 @@ var installObject = function(instance, klass) { }); instance.object = Object.create(_.extend({}, methods, transformations)); _.keys(methods).concat(_.keys(transformations)).forEach(function(key) { - instance.object[key] = _.bind(instance.object[key], instance); + if(_.isFunction(instance.object[key])) { + instance.object[key] = _.bind(instance.object[key], instance); + } }); }; diff --git a/src/wlxml/wlxml.test.js b/src/wlxml/wlxml.test.js index 9904154..af0e23b 100644 --- a/src/wlxml/wlxml.test.js +++ b/src/wlxml/wlxml.test.js @@ -286,6 +286,15 @@ describe('WLXMLDocument', function() { expect(testClassNode.object.testMethod().sameNode(testClassNode)).to.equal(true, '1'); }); + it('allows adding non-function properties to an ElementNode of specific class', function() { + extension = {wlxmlClass: {test_class: {methods: { + testProp: 123 + }}}}; + doc.registerExtension(extension); + testClassNode = doc.root.contents()[1]; + expect(testClassNode.object.testProp).to.equal(123); + }); + it('allows adding transformation to an ElementNode of specific class', function() { extension = {wlxmlClass: {test_class: {transformations: { testTransformation: function() { return this; }, -- 2.20.1