AK: Don’t drop lines between \r and \n in StringView::lines() (#7662)

StringView::lines() supports line-separators “\n”, “\r”, and “\r\n”.
The method will drop an entire line if it is surrounded by “\r”
and “\n” separators on the left and right sides respectively.
This commit is contained in:
R Smith 2021-06-01 23:17:04 +12:00 committed by Ali Mohammad Pur
parent 1828607606
commit 5a6f0ef1bc
2 changed files with 3 additions and 2 deletions

View file

@ -99,12 +99,13 @@ Vector<StringView> StringView::lines(bool consider_cr) const
if (last_ch_was_cr) {
substart = i + 1;
split_view = false;
last_ch_was_cr = false;
}
}
if (ch == '\r') {
split_view = true;
last_ch_was_cr = true;
} else {
last_ch_was_cr = false;
}
if (split_view) {
size_t sublen = i - substart;

View file

@ -77,7 +77,7 @@ TEST_CASE(ends_with)
TEST_CASE(lines)
{
String test_string = "a\nb\r\nc\rd";
String test_string = "a\rb\nc\r\nd";
StringView test_string_view = test_string.view();
Vector<StringView> test_string_vector = test_string_view.lines();
EXPECT_EQ(test_string_vector.size(), 4u);