From 02cd52cfb76e37c1dd8f00e310e297f5055be669 Mon Sep 17 00:00:00 2001 From: Mike Gerwitz Date: Sat, 29 Oct 2011 08:08:02 -0400 Subject: [PATCH] [#25] Began refactoring getter/setter building into a single method (util.propParse) I'm unsure as to why I originally placed them in separate methods. propParse() will always find a getter at the same time it finds a setter, and vice versa, should they both have been defined on the object. --- lib/ClassBuilder.js | 11 +++-------- lib/interface.js | 14 +++----------- lib/util.js | 8 ++++---- test/test-interface-name.js | 8 +++++--- test/test-util-prop-parse-keywords.js | 10 +++------- test/test-util-prop-parse.js | 10 +++------- 6 files changed, 21 insertions(+), 40 deletions(-) diff --git a/lib/ClassBuilder.js b/lib/ClassBuilder.js index 1d8bb2a..6293e60 100644 --- a/lib/ClassBuilder.js +++ b/lib/ClassBuilder.js @@ -465,21 +465,16 @@ exports.prototype.buildMembers = function buildMembers( ); }, - getter: function( name, value, keywords ) + getset: function( name, get, set, keywords ) { var dest = ( keywordStatic( keywords ) ) ? smethods : members; _self._memberBuilder.buildGetter( - dest, null, name, value, keywords, base + dest, null, name, get, keywords, base ); - }, - - setter: function( name, value, keywords ) - { - var dest = ( keywordStatic( keywords ) ) ? smethods : members; _self._memberBuilder.buildSetter( - dest, null, name, value, keywords, base + dest, null, name, set, keywords, base ); }, diff --git a/lib/interface.js b/lib/interface.js index b1de6ac..221396b 100644 --- a/lib/interface.js +++ b/lib/interface.js @@ -209,19 +209,11 @@ var extend = ( function( extending ) ); }, - getter: function() + getset: function() { throw TypeError( - "Getter not permitter within definition of Interface '" + - iname + "'" - ); - }, - - setter: function() - { - throw TypeError( - "Setter within definition of Interface '" + - iname + "'" + "Getters/setters are not permitter within definition " + + "of Interface '" + iname + "'" ); }, diff --git a/lib/util.js b/lib/util.js index 60269b7..5d69505 100644 --- a/lib/util.js +++ b/lib/util.js @@ -261,8 +261,7 @@ exports.propParse = function( data, options ) callbackEach = options.each || undefined, callbackProp = options.property || fvoid, callbackMethod = options.method || fvoid, - callbackGetter = options.getter || fvoid, - callbackSetter = options.setter || fvoid, + callbackGetSet = options.getset || fvoid, keywordParser = options.keywordParser || propParseKeywords, hasOwn = Object.prototype.hasOwnProperty, @@ -319,8 +318,9 @@ exports.propParse = function( data, options ) // getter/setter if ( getter || setter ) { - callbackGetter.call( callbackGetter, name, getter, keywords ); - callbackSetter.call( callbackSetter, name, setter, keywords ); + callbackGetSet.call( callbackGetSet, + name, getter, setter, keywords + ); } // method else if ( value instanceof Function ) diff --git a/test/test-interface-name.js b/test/test-interface-name.js index 26a9840..c78a08b 100644 --- a/test/test-interface-name.js +++ b/test/test-interface-name.js @@ -203,9 +203,6 @@ var common = require( './common' ), { // cause the error tries[ i ](); - - // we shouldn't get to this point... - assert.fail( "Expected error. Something's wrong." ); } catch ( e ) { @@ -215,7 +212,12 @@ var common = require( './common' ), null, "Error contains interface name when available (" + i + ")" ); + + return; } + + // we shouldn't get to this point... + assert.fail( "Expected error. Something's wrong: " + i ); } } )(); diff --git a/test/test-util-prop-parse-keywords.js b/test/test-util-prop-parse-keywords.js index 19e25b1..a0a1d9b 100644 --- a/test/test-util-prop-parse-keywords.js +++ b/test/test-util-prop-parse-keywords.js @@ -190,14 +190,10 @@ var common = require( './common' ), util.propParse( data, { - getter: function( name, value, keywords ) + getset: function( name, get, set, keywords ) { - parsed_keywords[ name + 'g' ] = keywords; - }, - - setter: function( name, value, keywords ) - { - parsed_keywords[ name + 's' ] = keywords; + get && ( parsed_keywords[ name + 'g' ] = keywords ); + set && ( parsed_keywords[ name + 's' ] = keywords ); }, } ); diff --git a/test/test-util-prop-parse.js b/test/test-util-prop-parse.js index 807a102..a477e10 100644 --- a/test/test-util-prop-parse.js +++ b/test/test-util-prop-parse.js @@ -96,15 +96,11 @@ util.propParse( data, { to[ name ] = method; }, - getter: function( name, func ) + getset: function( name, get, set ) { - getters[ name ] = func; + getters[ name ] = get; + setters[ name ] = set; }, - - setter: function( name, func ) - { - setters[ name ] = func; - } } );