Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(363)

Unified Diff: frog/lib/node/readline.dart

Issue 9034014: Add support for the node net module. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: new version of minfrog Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: frog/lib/node/readline.dart
===================================================================
--- frog/lib/node/readline.dart (revision 0)
+++ frog/lib/node/readline.dart (revision 0)
@@ -0,0 +1,79 @@
+// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+#library('readline');
+#import('node.dart');
+
+// module readline
+
+// Actual shape of result is [List<String>, String]
+typedef List ReadlineCompleter(String linePartial);
+
+// Actual shape of results is [List<String>, String]
+typedef void ReadlineCompleterCallback(var unused_pass_null, List results);
+
+typedef void ReadlineCompleterAsync(String linePartial,
+ ReadlineCompleterCallback callback);
+
+class Readline native "require('readline')" {
+ static ReadlineInterface createInterface(ReadStream input, WriteStream output,
+ [ReadlineCompleter completer]) native;
+ static ReadlineInterface createInterfaceAsyncCompleter(ReadStream input,
+ WriteStream output, ReadlineCompleterAsync completer)
+ native "this.createInterface(input, output, completer);";
+ static int columns;
+}
+
+typedef void ReadlineInterfaceLineListener(String line);
+typedef void ReadlineInterfaceCloseListener();
+typedef void ReadlineInterfaceQuestionCallback(String answer);
+
+class ReadlineInterface implements EventEmitter native "Readline.Interface" {
+ // EventEmitter
+ void removeAllListeners(String event)
+ native "this.removeAllListeners(event);";
+ void setMaxListeners(num n)
+ native "this.setMaxListeners(n);";
+ var _listeners(String key)
+ native "return this.listeners(key);";
+
+ // event 'line'
+ void emitLine(String line)
+ native "this.emit('line');";
+ void addListenerLine(ReadlineInterfaceLineListener listener)
+ native "this.addListener('line', listener);";
+ void onLine(ReadlineInterfaceLineListener listener)
+ native "this.on('line', listener);";
+ void onceLine(ReadlineInterfaceLineListener listener)
+ native "this.once('line', listener);";
+ void removeListenerLine(ReadlineInterfaceLineListener listener)
+ native "this.removeListener('line', listener);";
+ List<ReadlineInterfaceLineListener> listenersLine()
+ => new _NativeListPrimitiveElement<ReadlineInterfaceLineListener>(
+ _listeners('line'));
+
+ // event 'close'
+ void emitClose()
+ native "this.emit('close');";
+ void addListenerClose(ReadlineInterfaceCloseListener listener)
+ native "this.addListener('close', listener);";
+ void onClose(ReadlineInterfaceCloseListener listener)
+ native "this.on('close', listener);";
+ void onceClose(ReadlineInterfaceCloseListener listener)
+ native "this.once('close', listener);";
+ void removeListenerClose(ReadlineInterfaceCloseListener listener)
+ native "this.removeListener('close', listener);";
+ List<ReadlineInterfaceCloseListener> listenersClose()
+ => new _NativeListPrimitiveElement<ReadlineInterfaceCloseListener>(
+ _listeners('close'));
+
+ void setPrompt(String prompt, [int length]) native;
+ void prompt() native;
+ void question(String question, ReadlineInterfaceQuestionCallback callback)
+ native;
+ void close() native;
+ void pause() native;
+ void resume() native;
+ void write(String s) native;
+}

Powered by Google App Engine
This is Rietveld 408576698