/* * Copyright (c) 2021, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace Unicode { enum class CalendarPatternStyle : u8 { Narrow, Short, Long, Numeric, TwoDigit, }; struct CalendarPattern { String pattern {}; Optional pattern12 {}; // https://unicode.org/reports/tr35/tr35-dates.html#Calendar_Fields Optional era {}; Optional year {}; Optional month {}; Optional weekday {}; Optional day {}; Optional day_period {}; Optional hour {}; Optional minute {}; Optional second {}; Optional fractional_second_digits {}; Optional time_zone_name {}; }; enum class CalendarFormatType : u8 { Date, Time, DateTime, }; struct CalendarFormat { CalendarPattern full_format {}; CalendarPattern long_format {}; CalendarPattern medium_format {}; CalendarPattern short_format {}; }; CalendarPatternStyle calendar_pattern_style_from_string(StringView style); StringView calendar_pattern_style_to_string(CalendarPatternStyle style); Optional get_calendar_format(StringView locale, StringView calendar, CalendarFormatType type); }