]> granicus.if.org Git - python/commitdiff
Exposed readline() function from the readline module.
authorSkip Montanaro <skip@pobox.com>
Sun, 23 May 2004 17:46:50 +0000 (17:46 +0000)
committerSkip Montanaro <skip@pobox.com>
Sun, 23 May 2004 17:46:50 +0000 (17:46 +0000)
Doc/lib/libreadline.tex
Misc/NEWS
Modules/readline.c

index 24dd2a3601ee6f165a25f970000da3bd683a999f..cd2a80a5aa49f0d8fb21f4383e4570ef03dbabfd 100644 (file)
@@ -15,6 +15,10 @@ interpreter.
 The \module{readline} module defines the following functions:
 
 
+\begin{funcdesc}{readline}{\optional{prompt}}
+Get a single line of input from the user.
+\end{funcdesc}
+
 \begin{funcdesc}{parse_and_bind}{string}
 Parse and execute single line of a readline init file.
 \end{funcdesc}
@@ -154,3 +158,4 @@ import atexit
 atexit.register(readline.write_history_file, histfile)
 del os, histfile
 \end{verbatim}
+
index 7215483a329a7fb9ea8f446f4b79f3038326633e..b04495f8291b406784d79567f68f83317a610e17 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -207,6 +207,11 @@ Core and builtins
 Extension modules
 -----------------
 
+- The readline module now exposes the readline() function to the Python
+  programmer.  readline.readline() should be a drop-in replacement for
+  raw_input() but coupled with the other readline module functionality allow
+  programmers to offer history and input recall to their users.
+
 - operator.isMappingType() and operator.isSequenceType() now give
   fewer false positives.
 
index 37baf87e1fe5ca205f3763b7b6db29c9c9a7b252..50ceef490539009ce755b7ad7754515d2d0f308f 100644 (file)
 #endif
 
 
+/* Exported function to get a line from the user */
+
+static PyObject *
+py_readline(PyObject *self, PyObject *args)
+{
+       char *s = NULL;
+       char *line = NULL;
+       if (!PyArg_ParseTuple(args, "|s:readline", &s))
+               return NULL;
+       line = readline(s);
+       if (line == NULL) {
+               PyErr_SetString(PyExc_EOFError, "End of file on input");
+               return NULL;
+       }
+       return PyString_FromString(line);
+}
+
+PyDoc_STRVAR(doc_py_readline,
+"readline([prompt]) -> line\n\
+Prompt for and read a line of text.  Raise EOFError on EOF.");
+
+
 /* Exported function to send one line to readline's init file parser */
 
 static PyObject *
@@ -468,6 +490,7 @@ contents of the line buffer.");
 
 static struct PyMethodDef readline_methods[] =
 {
+       {"readline", py_readline, METH_VARARGS, doc_py_readline},
        {"parse_and_bind", parse_and_bind, METH_VARARGS, doc_parse_and_bind},
        {"get_line_buffer", get_line_buffer, METH_NOARGS, doc_get_line_buffer},
        {"insert_text", insert_text, METH_VARARGS, doc_insert_text},