toString implementation for Filter.

If Format.CQL is not included in the build, toString from Object will be used.
This commit is contained in:
ahocevar
2011-11-28 12:25:28 +01:00
parent 6f341b1fb5
commit c3fa0875dc
2 changed files with 29 additions and 1 deletions

View File

@@ -56,7 +56,7 @@ OpenLayers.Filter = OpenLayers.Class({
/**
* APIMethod: clone
* Clones this filter. Should be implementted by subclasses.
* Clones this filter. Should be implemented by subclasses.
*
* Returns:
* {<OpenLayers.Filter>} Clone of this filter.
@@ -65,5 +65,23 @@ OpenLayers.Filter = OpenLayers.Class({
return null;
},
/**
* APIMethod: toString
*
* Returns:
* {String} Include <OpenLayers.Format.CQL> in your build to get a CQL
* representation of the filter returned. Otherwise "[Object object]"
* will be returned.
*/
toString: function() {
var string;
if (OpenLayers.Format && OpenLayers.Format.CQL) {
string = OpenLayers.Format.CQL.prototype.write(this);
} else {
string = Object.prototype.toString.call(this);
}
return string;
},
CLASS_NAME: "OpenLayers.Filter"
});

View File

@@ -13,6 +13,16 @@
t.eq(filter.foo, "bar", "constructor sets options correctly");
t.eq(typeof filter.evaluate, "function", "filter has an evaluate function");
}
function test_toString(t) {
t.plan(1);
var filter = new OpenLayers.Filter.Comparison({
property: "PERSONS",
value: 2000000,
type: OpenLayers.Filter.Comparison.LESS_THAN
});
t.eq(filter.toString(), "PERSONS < 2000000", "toString returns CQL representation");
}
</script>
</head>