Commit 0dc23101 authored by Skip Montanaro's avatar Skip Montanaro

Exposed readline() function from the readline module.

parent ddc819c9
...@@ -15,6 +15,10 @@ interpreter. ...@@ -15,6 +15,10 @@ interpreter.
The \module{readline} module defines the following functions: 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} \begin{funcdesc}{parse_and_bind}{string}
Parse and execute single line of a readline init file. Parse and execute single line of a readline init file.
\end{funcdesc} \end{funcdesc}
...@@ -154,3 +158,4 @@ import atexit ...@@ -154,3 +158,4 @@ import atexit
atexit.register(readline.write_history_file, histfile) atexit.register(readline.write_history_file, histfile)
del os, histfile del os, histfile
\end{verbatim} \end{verbatim}
...@@ -207,6 +207,11 @@ Core and builtins ...@@ -207,6 +207,11 @@ Core and builtins
Extension modules 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 - operator.isMappingType() and operator.isSequenceType() now give
fewer false positives. fewer false positives.
......
...@@ -32,6 +32,28 @@ ...@@ -32,6 +32,28 @@
#endif #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 */ /* Exported function to send one line to readline's init file parser */
static PyObject * static PyObject *
...@@ -468,6 +490,7 @@ contents of the line buffer."); ...@@ -468,6 +490,7 @@ contents of the line buffer.");
static struct PyMethodDef readline_methods[] = 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}, {"parse_and_bind", parse_and_bind, METH_VARARGS, doc_parse_and_bind},
{"get_line_buffer", get_line_buffer, METH_NOARGS, doc_get_line_buffer}, {"get_line_buffer", get_line_buffer, METH_NOARGS, doc_get_line_buffer},
{"insert_text", insert_text, METH_VARARGS, doc_insert_text}, {"insert_text", insert_text, METH_VARARGS, doc_insert_text},
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment