mirror of
https://github.com/RustPython/RustPython.git
synced 2026-10-28 18:59:04 +08:00
Merge pull request #1808 from youknowone/str-splitlines
Fix str.splitlines() for \r
This commit is contained in:
2 files changed
+6
-4
No files matched your search
@@ -946,8 +946,6 @@ class BaseTest:
|
||||
self.checkequal('Getint', "getInt", 'title')
|
||||
self.checkraises(TypeError, 'hello', 'title', 42)
|
||||
|
||||
# TODO: RUSTPYTHON
|
||||
@unittest.expectedFailure
|
||||
def test_splitlines(self):
|
||||
self.checkequal(['abc', 'def', '', 'ghi'], "abc\ndef\n\rghi", 'splitlines')
|
||||
self.checkequal(['abc', 'def', '', 'ghi'], "abc\ndef\n\r\nghi", 'splitlines')
|
||||
|
||||
@@ -803,11 +803,15 @@ impl PyString {
|
||||
let keepends = args.keepends.unwrap_or(false);
|
||||
let mut elements = vec![];
|
||||
let mut curr = "".to_owned();
|
||||
for ch in self.value.chars() {
|
||||
if ch == '\n' {
|
||||
let mut chars = self.value.chars().peekable();
|
||||
while let Some(ch) = chars.next() {
|
||||
if ch == '\n' || ch == '\r' {
|
||||
if keepends {
|
||||
curr.push(ch);
|
||||
}
|
||||
if ch == '\r' && chars.peek() == Some(&'\n') {
|
||||
continue;
|
||||
}
|
||||
elements.push(vm.ctx.new_str(curr.clone()));
|
||||
curr.clear();
|
||||
} else {
|
||||
|
||||
Reference in new issue
Block a user