diff --git a/lib/util.js b/lib/util.js index ebb1ff7..e24551a 100644 --- a/lib/util.js +++ b/lib/util.js @@ -229,8 +229,8 @@ exports.propParse = function( data, options ) // getter/setter if ( getter || setter ) { - callbackGetter.call( callbackGetter, name, getter ); - callbackSetter.call( callbackSetter, name, setter ); + callbackGetter.call( callbackGetter, name, getter, keywords ); + callbackSetter.call( callbackSetter, name, setter, keywords ); } // method else if ( value instanceof Function ) diff --git a/test/test-util-prop-parse-keywords.js b/test/test-util-prop-parse-keywords.js index 609bafa..7322dd2 100644 --- a/test/test-util-prop-parse-keywords.js +++ b/test/test-util-prop-parse-keywords.js @@ -170,5 +170,43 @@ var common = require( './common' ), "interpretation (" + prop + ")" ); } + + + // for browsers that support it + if ( Object.prototype.__defineGetter__ !== undefined ) + { + data = {}; + parsed_keywords = {}; + + // to prevent syntax errors for environments that don't support + // getters/setters in object notation + data.__defineGetter__( 'public foo', function() {} ); + data.__defineSetter__( 'public foo', function() {} ); + + + util.propParse( data, { + getter: function( name, value, keywords ) + { + parsed_keywords[ name + 'g' ] = keywords; + }, + + setter: function( name, value, keywords ) + { + parsed_keywords[ name + 's' ] = keywords; + }, + } ); + + assert.deepEqual( + parsed_keywords.foog, + { 'public': true }, + "Getter keywords are properly recognized and available" + ); + + assert.deepEqual( + parsed_keywords.foos, + { 'public': true }, + "Setter keywords are properly recognized and available" + ); + } } )();