1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 12:17:44 +00:00

LibRegex: Implement line splitting for Utf32View

Co-authored-by: Timothy Flynn <trflynn89@pm.me>
This commit is contained in:
Ali Mohammad Pur 2021-07-18 00:21:53 +04:30 committed by Ali Mohammad Pur
parent 0060fa48d4
commit da1fda73a7

View file

@ -10,6 +10,7 @@
#include "AK/FlyString.h" #include "AK/FlyString.h"
#include "AK/HashMap.h" #include "AK/HashMap.h"
#include "AK/MemMem.h"
#include "AK/String.h" #include "AK/String.h"
#include "AK/StringBuilder.h" #include "AK/StringBuilder.h"
#include "AK/StringView.h" #include "AK/StringView.h"
@ -88,9 +89,19 @@ public:
return new_views; return new_views;
} }
// FIXME: line splitting for Utf32View needed
Vector<RegexStringView> views; Vector<RegexStringView> views;
views.append(m_u32view.value()); auto view = u32view();
u32 newline = '\n';
while (!view.is_empty()) {
auto position = AK::memmem_optional(view.code_points(), view.length() * sizeof(u32), &newline, sizeof(u32));
if (!position.has_value())
break;
auto offset = position.value() / sizeof(u32);
views.append(view.substring_view(0, offset));
view = view.substring_view(offset + 1, view.length() - offset - 1);
}
if (!view.is_empty())
views.append(view);
return views; return views;
} }