From: Skip Montanaro Date: Sun, 23 May 2004 17:46:50 +0000 (+0000) Subject: Exposed readline() function from the readline module. X-Git-Tag: v2.4a1~347 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0dc23101a070fd6a5cceb66ee87eac70f94e7bd1;p=python Exposed readline() function from the readline module. --- diff --git a/Doc/lib/libreadline.tex b/Doc/lib/libreadline.tex index 24dd2a3601..cd2a80a5aa 100644 --- a/Doc/lib/libreadline.tex +++ b/Doc/lib/libreadline.tex @@ -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} + diff --git a/Misc/NEWS b/Misc/NEWS index 7215483a32..b04495f829 100644 --- 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. diff --git a/Modules/readline.c b/Modules/readline.c index 37baf87e1f..50ceef4905 100644 --- a/Modules/readline.c +++ b/Modules/readline.c @@ -32,6 +32,28 @@ #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},