@@ -48,7 +48,6 @@ var path = require('path');
4848var fs = require ( 'fs' ) ;
4949var rl = require ( 'readline' ) ;
5050var Console = require ( 'console' ) . Console ;
51- var EventEmitter = require ( 'events' ) . EventEmitter ;
5251var domain = require ( 'domain' ) ;
5352var debug = util . debuglog ( 'repl' ) ;
5453
@@ -82,8 +81,6 @@ function REPLServer(prompt, stream, eval_, useGlobal, ignoreUndefined) {
8281 return new REPLServer ( prompt , stream , eval_ , useGlobal , ignoreUndefined ) ;
8382 }
8483
85- EventEmitter . call ( this ) ;
86-
8784 var options , input , output , dom ;
8885 if ( util . isObject ( prompt ) ) {
8986 // an options object was given
@@ -109,6 +106,9 @@ function REPLServer(prompt, stream, eval_, useGlobal, ignoreUndefined) {
109106 self . useGlobal = ! ! useGlobal ;
110107 self . ignoreUndefined = ! ! ignoreUndefined ;
111108
109+ // just for backwards compat, see github.com/joyent/node/pull/7127
110+ self . rli = this ;
111+
112112 eval_ = eval_ || defaultEval ;
113113
114114 function defaultEval ( code , context , file , cb ) {
@@ -179,19 +179,18 @@ function REPLServer(prompt, stream, eval_, useGlobal, ignoreUndefined) {
179179 self . bufferedCommand = '' ;
180180 self . lines . level = [ ] ;
181181
182- self . prompt = ! util . isUndefined ( prompt ) ? prompt : '> ' ;
183-
184182 function complete ( text , callback ) {
185183 self . complete ( text , callback ) ;
186184 }
187185
188- var rli = rl . createInterface ( {
189- input : self . inputStream ,
190- output : self . outputStream ,
191- completer : complete ,
192- terminal : options . terminal
193- } ) ;
194- self . rli = rli ;
186+ rl . Interface . apply ( this , [
187+ self . inputStream ,
188+ self . outputStream ,
189+ complete ,
190+ options . terminal
191+ ] )
192+
193+ self . setPrompt ( ! util . isUndefined ( prompt ) ? prompt : '> ' ) ;
195194
196195 this . commands = { } ;
197196 defineDefaultCommands ( this ) ;
@@ -200,7 +199,7 @@ function REPLServer(prompt, stream, eval_, useGlobal, ignoreUndefined) {
200199 self . writer = options . writer || exports . writer ;
201200
202201 if ( util . isUndefined ( options . useColors ) ) {
203- options . useColors = rli . terminal ;
202+ options . useColors = self . terminal ;
204203 }
205204 self . useColors = ! ! options . useColors ;
206205
@@ -211,24 +210,24 @@ function REPLServer(prompt, stream, eval_, useGlobal, ignoreUndefined) {
211210 } ;
212211 }
213212
214- rli . setPrompt ( self . prompt ) ;
213+ self . setPrompt ( self . _prompt ) ;
215214
216- rli . on ( 'close' , function ( ) {
215+ self . on ( 'close' , function ( ) {
217216 self . emit ( 'exit' ) ;
218217 } ) ;
219218
220219 var sawSIGINT = false ;
221- rli . on ( 'SIGINT' , function ( ) {
222- var empty = rli . line . length === 0 ;
223- rli . clearLine ( ) ;
220+ self . on ( 'SIGINT' , function ( ) {
221+ var empty = self . line . length === 0 ;
222+ self . clearLine ( ) ;
224223
225224 if ( ! ( self . bufferedCommand && self . bufferedCommand . length > 0 ) && empty ) {
226225 if ( sawSIGINT ) {
227- rli . close ( ) ;
226+ self . close ( ) ;
228227 sawSIGINT = false ;
229228 return ;
230229 }
231- rli . output . write ( '(^C again to quit)\n' ) ;
230+ self . output . write ( '(^C again to quit)\n' ) ;
232231 sawSIGINT = true ;
233232 } else {
234233 sawSIGINT = false ;
@@ -239,7 +238,7 @@ function REPLServer(prompt, stream, eval_, useGlobal, ignoreUndefined) {
239238 self . displayPrompt ( ) ;
240239 } ) ;
241240
242- rli . on ( 'line' , function ( cmd ) {
241+ self . on ( 'line' , function ( cmd ) {
243242 debug ( 'line %j' , cmd ) ;
244243 sawSIGINT = false ;
245244 var skipCatchall = false ;
@@ -322,13 +321,13 @@ function REPLServer(prompt, stream, eval_, useGlobal, ignoreUndefined) {
322321 } ;
323322 } ) ;
324323
325- rli . on ( 'SIGCONT' , function ( ) {
324+ self . on ( 'SIGCONT' , function ( ) {
326325 self . displayPrompt ( true ) ;
327326 } ) ;
328327
329328 self . displayPrompt ( ) ;
330329}
331- inherits ( REPLServer , EventEmitter ) ;
330+ inherits ( REPLServer , rl . Interface ) ;
332331exports . REPLServer = REPLServer ;
333332
334333
@@ -340,7 +339,6 @@ exports.start = function(prompt, source, eval_, useGlobal, ignoreUndefined) {
340339 return repl ;
341340} ;
342341
343-
344342REPLServer . prototype . createContext = function ( ) {
345343 var context ;
346344 if ( this . useGlobal ) {
@@ -388,17 +386,17 @@ REPLServer.prototype.resetContext = function() {
388386} ;
389387
390388REPLServer . prototype . displayPrompt = function ( preserveCursor ) {
391- var prompt = this . prompt ;
389+ var prompt = this . _prompt ;
392390 if ( this . bufferedCommand . length ) {
393391 prompt = '...' ;
394392 var levelInd = new Array ( this . lines . level . length ) . join ( '..' ) ;
395393 prompt += levelInd + ' ' ;
394+ } else {
395+ this . setPrompt ( prompt ) ;
396396 }
397- this . rli . setPrompt ( prompt ) ;
398- this . rli . prompt ( preserveCursor ) ;
397+ this . prompt ( preserveCursor ) ;
399398} ;
400399
401-
402400// A stream to push an array into a REPL
403401// used in REPLServer.complete
404402function ArrayStream ( ) {
@@ -838,7 +836,7 @@ function defineDefaultCommands(repl) {
838836 repl . defineCommand ( 'exit' , {
839837 help : 'Exit the repl' ,
840838 action : function ( ) {
841- this . rli . close ( ) ;
839+ this . close ( ) ;
842840 }
843841 } ) ;
844842
@@ -879,7 +877,7 @@ function defineDefaultCommands(repl) {
879877 this . displayPrompt ( ) ;
880878 lines . forEach ( function ( line ) {
881879 if ( line ) {
882- self . rli . write ( line + '\n' ) ;
880+ self . write ( line + '\n' ) ;
883881 }
884882 } ) ;
885883 }
0 commit comments