diff options
author | Guido van Rossum <guido@python.org> | 2000-04-11 15:38:46 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2000-04-11 15:38:46 (GMT) |
commit | 86662914be20e1f008132647a82cdeb9506f13c5 (patch) | |
tree | 3e4d9998f3fbf1b027eb38014388d479997c250f /Objects | |
parent | 3afba7644b481eb7ef6baf02fad42a185b0f008e (diff) | |
download | cpython-86662914be20e1f008132647a82cdeb9506f13c5.zip cpython-86662914be20e1f008132647a82cdeb9506f13c5.tar.gz cpython-86662914be20e1f008132647a82cdeb9506f13c5.tar.bz2 |
Marc-Andre Lemburg:
The maxsplit functionality in .splitlines() was replaced by the keepends
functionality which allows keeping the line end markers together
with the string.
Diffstat (limited to 'Objects')
-rw-r--r-- | Objects/unicodeobject.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 4b99ad8..f10f9ab 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -2516,7 +2516,7 @@ PyObject *split_whitespace(PyUnicodeObject *self, } PyObject *PyUnicode_Splitlines(PyObject *string, - int maxcount) + int keepends) { register int i; register int j; @@ -2531,29 +2531,29 @@ PyObject *PyUnicode_Splitlines(PyObject *string, data = PyUnicode_AS_UNICODE(string); len = PyUnicode_GET_SIZE(string); - if (maxcount < 0) - maxcount = INT_MAX; - list = PyList_New(0); if (!list) goto onError; for (i = j = 0; i < len; ) { + int eol; + /* Find a line and append it */ while (i < len && !Py_UNICODE_ISLINEBREAK(data[i])) i++; - if (maxcount-- <= 0) - break; - SPLIT_APPEND(data, j, i); /* Skip the line break reading CRLF as one line break */ + eol = i; if (i < len) { if (data[i] == '\r' && i + 1 < len && data[i+1] == '\n') i += 2; else i++; + if (keepends) + eol = i; } + SPLIT_APPEND(data, j, eol); j = i; } if (j < len) { @@ -3785,21 +3785,21 @@ unicode_split(PyUnicodeObject *self, PyObject *args) } static char splitlines__doc__[] = -"S.splitlines([maxsplit]]) -> list of strings\n\ +"S.splitlines([keepends]]) -> list of strings\n\ \n\ Return a list of the lines in S, breaking at line boundaries.\n\ -If maxsplit is given, at most maxsplit are done. Line breaks are not\n\ -included in the resulting list."; +Line breaks are not included in the resulting list unless keepends\n\ +is given and true."; static PyObject* unicode_splitlines(PyUnicodeObject *self, PyObject *args) { - int maxcount = -1; + int keepends = 0; - if (!PyArg_ParseTuple(args, "|i:splitlines", &maxcount)) + if (!PyArg_ParseTuple(args, "|i:splitlines", &keepends)) return NULL; - return PyUnicode_Splitlines((PyObject *)self, maxcount); + return PyUnicode_Splitlines((PyObject *)self, keepends); } static |