mirror of
https://github.com/RustPython/RustPython.git
synced 2026-06-02 19:39:49 +09:00
Fix str.splitlines() for \r
This commit is contained in:
@@ -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')
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user