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
Notes: sideshowbarker 2024-07-18 08:47:53 +09:00

View file

@ -10,6 +10,7 @@
#include "AK/FlyString.h"
#include "AK/HashMap.h"
#include "AK/MemMem.h"
#include "AK/String.h"
#include "AK/StringBuilder.h"
#include "AK/StringView.h"
@ -88,9 +89,19 @@ public:
return new_views;
}
// FIXME: line splitting for Utf32View needed
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;
}