return object_match;
},
/**
+ * Checks if the registry contains an object mapping for this key.
+ *
+ * @param {String} key key to look for
+ */
+ contains: function (key) {
+ if (key === undefined) { return false; }
+ if (key in this.map) {
+ return true
+ }
+ if (this.parent) {
+ return this.parent.contains(key);
+ }
+ return false;
+ },
+ /**
* Tries a number of keys, and returns the first object matching one of
* the keys.
*
get_any: function (keys) {
for (var i=0; i<keys.length; ++i) {
var key = keys[i];
- if (key === undefined || !(key in this.map)) {
+ if (!this.contains(key)) {
continue;
}
strictEqual(reg.get_object('foo2'), openerp.web.Foo2);
strictEqual(reg2.get_object('foo2'), openerp.web.Foo2);
});
+ test('multiget', function () {
+ var reg = new openerp.web.Registry({
+ foo: 'openerp.web.Foo',
+ bar: 'openerp.web.Bar'
+ });
+
+ strictEqual(reg.get_any(['qux', 'grault', 'bar', 'foo']),
+ openerp.web.Bar);
+ });
+ test('extended-multiget', function () {
+ var reg = new openerp.web.Registry({
+ foo: 'openerp.web.Foo',
+ bar: 'openerp.web.Bar'
+ });
+ var reg2 = reg.extend();
+ strictEqual(reg2.get_any(['qux', 'grault', 'bar', 'foo']),
+ openerp.web.Bar);
+ });
});