ladybird/Userland/Libraries/LibWeb/Infra/ByteSequences.cpp
Linus Groh 1748362e05 LibWeb: Add 'byte-{lower,upper}case' operations from the Infra spec
Usually operations that mirror AOs from the Infra spec are simply part
of the underlying data structures in AK directly, but these don't seem
generally useful enough to add them as ByteBuffer methods.
2022-07-14 00:42:26 +01:00

29 lines
842 B
C++

/*
* Copyright (c) 2022, Linus Groh <linusg@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <AK/CharacterTypes.h>
#include <LibWeb/Infra/ByteSequences.h>
namespace Web::Infra {
// https://infra.spec.whatwg.org/#byte-lowercase
void byte_lowercase(ByteBuffer& bytes)
{
// To byte-lowercase a byte sequence, increase each byte it contains, in the range 0x41 (A) to 0x5A (Z), inclusive, by 0x20.
for (size_t i = 0; i < bytes.size(); ++i)
bytes[i] = to_ascii_lowercase(bytes[i]);
}
// https://infra.spec.whatwg.org/#byte-uppercase
void byte_uppercase(ByteBuffer& bytes)
{
// To byte-uppercase a byte sequence, subtract each byte it contains, in the range 0x61 (a) to 0x7A (z), inclusive, by 0x20.
for (size_t i = 0; i < bytes.size(); ++i)
bytes[i] = to_ascii_uppercase(bytes[i]);
}
}