/* * Copyright (c) 2024-2025, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Unicode { enum class ListFormatType { Conjunction, Disjunction, Unit, }; ListFormatType list_format_type_from_string(StringView); ListFormatType list_format_type_from_string(Utf16View); Utf16String list_format_type_to_string(ListFormatType); class ListFormat { public: static NonnullOwnPtr create(Utf16View locale, ListFormatType, Style); virtual ~ListFormat() = default; struct Partition { Utf16String type; Utf16String value; }; virtual Utf16String format(ReadonlySpan list) const = 0; virtual Vector format_to_parts(ReadonlySpan list) const = 0; protected: ListFormat() = default; }; }