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