mirror of
https://github.com/zebrajr/ladybird.git
synced 2025-12-06 00:19:53 +01:00
AK: Add a Utf16View ASCII validator
This commit is contained in:
parent
35a1832d08
commit
d978a582a0
|
|
@ -133,6 +133,11 @@ ErrorOr<String> Utf16View::to_utf8(AllowInvalidCodeUnits allow_invalid_code_unit
|
|||
return builder.to_string();
|
||||
}
|
||||
|
||||
bool Utf16View::is_ascii() const
|
||||
{
|
||||
return simdutf::validate_ascii(reinterpret_cast<char const*>(m_code_units.data()), length_in_code_units() * sizeof(char16_t));
|
||||
}
|
||||
|
||||
size_t Utf16View::length_in_code_points() const
|
||||
{
|
||||
if (m_length_in_code_points == NumericLimits<size_t>::max())
|
||||
|
|
|
|||
|
|
@ -109,6 +109,8 @@ public:
|
|||
|
||||
bool is_null() const { return m_code_units.is_null(); }
|
||||
bool is_empty() const { return m_code_units.is_empty(); }
|
||||
bool is_ascii() const;
|
||||
|
||||
size_t length_in_code_units() const { return m_code_units.size(); }
|
||||
size_t length_in_code_points() const;
|
||||
|
||||
|
|
|
|||
|
|
@ -307,6 +307,18 @@ TEST_CASE(decode_invalid_utf16)
|
|||
}
|
||||
}
|
||||
|
||||
TEST_CASE(is_ascii)
|
||||
{
|
||||
EXPECT(Utf16View {}.is_ascii());
|
||||
EXPECT(Utf16View { u"a" }.is_ascii());
|
||||
EXPECT(Utf16View { u"foo" }.is_ascii());
|
||||
EXPECT(Utf16View { u"foo\t\n\rbar\v\b123" }.is_ascii());
|
||||
|
||||
EXPECT(!Utf16View { u"😀" }.is_ascii());
|
||||
EXPECT(!Utf16View { u"foo 😀" }.is_ascii());
|
||||
EXPECT(!Utf16View { u"😀 foo" }.is_ascii());
|
||||
}
|
||||
|
||||
TEST_CASE(equals_ignoring_case)
|
||||
{
|
||||
auto string1 = MUST(AK::utf8_to_utf16("foobar"sv));
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user