Getters for member expression properties

This commit is contained in:
Tim Schaub
2013-06-11 22:56:17 -06:00
parent 2528581642
commit c05fb8c61b
2 changed files with 35 additions and 4 deletions

View File

@@ -554,17 +554,17 @@ ol.expression.Math.prototype.getRight = function() {
* *
* @constructor * @constructor
* @extends {ol.expression.Expression} * @extends {ol.expression.Expression}
* @param {ol.expression.Expression} expr An expression that resolves to an * @param {ol.expression.Expression} object An expression that resolves to an
* object. * object.
* @param {ol.expression.Identifier} property Identifier with name of property. * @param {ol.expression.Identifier} property Identifier with name of property.
*/ */
ol.expression.Member = function(expr, property) { ol.expression.Member = function(object, property) {
/** /**
* @type {ol.expression.Expression} * @type {ol.expression.Expression}
* @private * @private
*/ */
this.expr_ = expr; this.object_ = object;
/** /**
* @type {ol.expression.Identifier} * @type {ol.expression.Identifier}
@@ -581,7 +581,7 @@ goog.inherits(ol.expression.Member, ol.expression.Expression);
*/ */
ol.expression.Member.prototype.evaluate = function(opt_scope, opt_fns, ol.expression.Member.prototype.evaluate = function(opt_scope, opt_fns,
opt_this) { opt_this) {
var obj = this.expr_.evaluate(opt_scope, opt_fns, opt_this); var obj = this.object_.evaluate(opt_scope, opt_fns, opt_this);
if (!goog.isObject(obj)) { if (!goog.isObject(obj)) {
throw new Error('Expected member expression to evaluate to an object ' + throw new Error('Expected member expression to evaluate to an object ' +
'but got ' + obj); 'but got ' + obj);
@@ -590,6 +590,24 @@ ol.expression.Member.prototype.evaluate = function(opt_scope, opt_fns,
}; };
/**
* Get the object expression.
* @return {ol.expression.Expression} The object.
*/
ol.expression.Member.prototype.getObject = function() {
return this.object_;
};
/**
* Get the property expression.
* @return {ol.expression.Identifier} The property.
*/
ol.expression.Member.prototype.getProperty = function() {
return this.property_;
};
/** /**
* A logical not expression (e.g. `!foo`). * A logical not expression (e.g. `!foo`).

View File

@@ -558,6 +558,19 @@ describe('ol.expression.Member', function() {
expect(expr.evaluate(scope)).to.be(42); expect(expr.evaluate(scope)).to.be(42);
}); });
}); });
var object = new ol.expression.Identifier('foo');
var property = new ol.expression.Identifier('bar');
var expr = new ol.expression.Member(object, property);
describe('#getObject()', function() {
expect(expr.getObject()).to.be(object);
});
describe('#getProperty()', function() {
expect(expr.getProperty()).to.be(property);
});
}); });