-define(['libs/jquery-1.9.1.min'], function($) {
+define(['libs/jquery-1.9.1.min', 'libs/underscore-min'], function($, _) {
'use strict';
this.dom.attr('wlxml-class', desc.klass);
if(desc.content)
this.dom.text(desc.content);
+ if(desc.meta) {
+ var c = this;
+ _.keys(desc.meta).forEach(function(key) {
+ c.dom.attr('wlxml-meta-'+key, desc.meta[key]);
+ });
+ }
this.dom.attr('id', 'xxxxxxxx-xxxx-xxxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {var r = Math.random()*16|0,v=c=='x'?r:r&0x3|0x8;return v.toString(16);}));
}
};
return this.getClass() && this.getClass().substr(0, klass.length) === klass;
};
+CanvasNode.prototype.getMetaAttr = function(attr) {
+ return this.dom.attr('wlxml-meta-'+attr);
+}
+
+CanvasNode.prototype.getMetaAttrs = function() {
+ var toret = [];
+ var metaAttrPrefix = 'wlxml-meta-';
+
+ var attrs = this.dom.get(0).attributes;
+ for(var i = 0; i < attrs.length; i++) {
+ var attr = attrs[i];
+ if(attr.name.substr(0, metaAttrPrefix.length) === metaAttrPrefix) {
+ toret.push({name: attr.name.substr(metaAttrPrefix.length), value: attr.value});
+ }
+ }
+ return toret;
+}
+
+CanvasNode.prototype.setMetaAttr = function(attr, value) {
+ this.dom.attr('wlxml-meta-'+attr, value);
+}
+
return {
create: function(desc) {
return new CanvasNode(desc);
suite('Create canvas node', function() {
test('from description', function() {
- var node = canvasNode.create({tag: 'header', klass: 'some-class', content: 'some text content'});
+ var node = canvasNode.create({
+ tag: 'header',
+ klass: 'some-class',
+ content: 'some text content',
+ meta: {uri: 'some uri'}
+ });
assert.equal(node.getTag(), 'header');
assert.equal(node.getClass(), 'some-class');
assert.equal(node.getContent(), 'some text content');
- assertDomEqual($('<div wlxml-tag="header" wlxml-class="some-class">some text content</div>'), node.dom);
+ assert.equal(node.getMetaAttr('uri'), 'some uri');
+ assertDomEqual($('<div wlxml-tag="header" wlxml-class="some-class" wlxml-meta-uri="some uri">some text content</div>'), node.dom);
});
test('from dom object', function() {
- var node = canvasNode.create($('<div wlxml-tag="header" wlxml-class="some-class" id="1">'));
+ var node = canvasNode.create($('<div wlxml-tag="header" wlxml-class="some-class" id="1" wlxml-meta-uri="some uri">'));
assert.equal(node.getTag(), 'header');
assert.equal(node.getClass(), 'some-class');
+ assert.equal(node.getMetaAttr('uri'), 'some uri');
//assertDomEqual($('<div wlxml-tag="header" wlxml-class="some-class">'), node.dom);
});
});
});
});
+suite('meta attributes', function() {
+ test('get list of node\'s meta attributes', function() {
+ var node = canvasNode.create({tag: 'tag', klass: 'klass', meta: {a:1, b:2}});
+ var attrs = node.getMetaAttrs();
+ var expected = [{name: 'a', value: '1'}, {name:'b', value: '2'}];
+
+ assert.deepEqual(attrs.sort(), expected.sort());
+ });
+
+ test('set meta attribute', function() {
+ var node = canvasNode.create({tag: 'tag', meta: {a:'1'}});
+ node.setMetaAttr('a', '2');
+ assert.equal(node.dom.attr('wlxml-meta-a'), '2');
+ })
+})
});
\ No newline at end of file