From 70f5d09c34a27ebc503dd94956dc28ddf138abbb Mon Sep 17 00:00:00 2001 From: Mike Gerwitz Date: Mon, 24 Jan 2011 23:35:45 -0500 Subject: [PATCH] Interface now uses propParse and member builders --- lib/interface.js | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/lib/interface.js b/lib/interface.js index 7a41687..94a9506 100644 --- a/lib/interface.js +++ b/lib/interface.js @@ -22,8 +22,9 @@ * @package core */ -var util = require( './util' ), - Class = require( './class' ); +var util = require( './util' ), + member_builder = require( './member_builder' ), + Class = require( './class' ); /** @@ -55,23 +56,40 @@ var extend = ( function( extending ) var args = Array.prototype.slice.call( arguments ), props = args.pop() || {}, base = args.pop() || Interface, - prototype = new base(); + prototype = new base(), + + members = member_builder.initMembers( + prototype, prototype, prototype + ) + ; // sanity check inheritCheck( prototype ); var new_interface = createInterface(); - util.propCopy( props, prototype, { - each: function( name, value ) + util.propParse( props, { + property: function() { - if ( util.isAbstractMethod( value ) === false ) + throw TypeError( + "Properties are not permitted within Interface " + + "definitions" + ); + }, + + method: function( name, value, is_abstract, keywords ) + { + if ( !is_abstract ) { throw TypeError( - "Only abstract methods are permitted within Interface " + - "definitons" + "Only abstract methods are permitted within " + + "Interface definitions" ); } + + member_builder.buildMethod( + members, null, name, value, keywords + ); }, } );