I really have to admire how Perlish Javascript seems to be at times. Of course, that could be how I'm using it:
_getComparison: function (elem, type) { var name = elem.name; var regex = new RegExp("^_([^_]*)_" + type); name = name.replace(regex, "$1"); if (! name) return; var value = ""; if (elem.options) { value = elem.options[elem.selectedIndex].value; value = value ? value : ""; } return { "name" : name, "value" : value }; },
Oh, but that's a bit complicated. I had better have tests.
canOK('FormHandler.Search', '_getComparison'); var elem = document.search._age_comp; var results = search._getComparison(elem, 'comp'); is(results["name"], "age", '... and it should return the name of the property it refers to'); is(results["value"], "GT", '... and the value of the comparison property'); elem = document.search._age_logical; results = search._getComparison(elem, 'logical'); is(results["name"], "age", '... and a logical comparison should return the property name'); is(results["value"], "", '... but it should return an empty string if there is no value');
And the results:
ok 18 - FormHandler.Search.can('_getComparison') ok 19 - ... and it should return the name of the property it refers to ok 20 - ... and the value of the comparison property ok 21 - ... and a logical comparison should return the property name ok 22 - ... but it should return an empty string if there is no value