Fix str.splitlines() for \r

This commit is contained in:
Jeong YunWon
2020-03-11 05:47:21 +09:00
parent 199c75bbb4
commit 967952dd40
2 changed files with 6 additions and 4 deletions

View File

@@ -950,8 +950,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')

View File

@@ -797,11 +797,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 {