ladybird/Libraries/LibUnicode/Collator.h
Andreas Kling b81269e78b Libraries: Clean up UTF-16 source text paths
Store parser errors, source range filenames, source code filenames,
module source, and Rust parser errors as UTF-16 where they flow back
into JavaScript-visible strings. Keep byte-oriented source buffers
byte-backed.

Remove temporary PrimitiveString, ByteString, and UTF-8 detours from
JSON, RegExp, module debug logging, print formatting, and tests.
2026-06-22 19:51:25 +02:00

66 lines
1.2 KiB
C++

/*
* Copyright (c) 2024-2025, Tim Flynn <trflynn89@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/NonnullOwnPtr.h>
#include <AK/Utf16String.h>
#include <AK/Utf16View.h>
namespace Unicode {
enum class Usage {
Sort,
Search,
};
Usage usage_from_string(Utf16View);
Utf16String usage_to_string(Usage);
enum class Sensitivity {
Base,
Accent,
Case,
Variant,
};
Sensitivity sensitivity_from_string(Utf16View);
Utf16String sensitivity_to_string(Sensitivity);
enum class CaseFirst {
Upper,
Lower,
False,
};
CaseFirst case_first_from_string(Utf16View);
Utf16String case_first_to_string(CaseFirst);
class Collator {
public:
static NonnullOwnPtr<Collator> create(
Utf16View locale,
Usage,
Utf16View collation,
Optional<Sensitivity>,
CaseFirst,
bool numeric,
Optional<bool> ignore_punctuation);
virtual ~Collator() = default;
enum class Order {
Before,
Equal,
After,
};
virtual Order compare(Utf16View const&, Utf16View const&) const = 0;
virtual Sensitivity sensitivity() const = 0;
virtual bool ignore_punctuation() const = 0;
protected:
Collator() = default;
};
}