DateTimeFormat.cpp 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /*
  2. * Copyright (c) 2021, Tim Flynn <trflynn89@pm.me>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibUnicode/DateTimeFormat.h>
  7. #if ENABLE_UNICODE_DATA
  8. # include <LibUnicode/UnicodeDateTimeFormat.h>
  9. #endif
  10. namespace Unicode {
  11. CalendarPatternStyle calendar_pattern_style_from_string(StringView style)
  12. {
  13. if (style == "narrow"sv)
  14. return CalendarPatternStyle::Narrow;
  15. if (style == "short"sv)
  16. return CalendarPatternStyle::Short;
  17. if (style == "long"sv)
  18. return CalendarPatternStyle::Long;
  19. if (style == "numeric"sv)
  20. return CalendarPatternStyle::Numeric;
  21. if (style == "2-digit"sv)
  22. return CalendarPatternStyle::TwoDigit;
  23. VERIFY_NOT_REACHED();
  24. }
  25. StringView calendar_pattern_style_to_string(CalendarPatternStyle style)
  26. {
  27. switch (style) {
  28. case CalendarPatternStyle::Narrow:
  29. return "narrow"sv;
  30. case CalendarPatternStyle::Short:
  31. return "short"sv;
  32. case CalendarPatternStyle::Long:
  33. return "long"sv;
  34. case CalendarPatternStyle::Numeric:
  35. return "Numeric"sv;
  36. case CalendarPatternStyle::TwoDigit:
  37. return "2-digit"sv;
  38. default:
  39. VERIFY_NOT_REACHED();
  40. }
  41. }
  42. Optional<CalendarFormat> get_calendar_format([[maybe_unused]] StringView locale, [[maybe_unused]] StringView calendar, [[maybe_unused]] CalendarFormatType type)
  43. {
  44. #if ENABLE_UNICODE_DATA
  45. switch (type) {
  46. case CalendarFormatType::Date:
  47. return Detail::get_calendar_date_format(locale, calendar);
  48. case CalendarFormatType::Time:
  49. return Detail::get_calendar_time_format(locale, calendar);
  50. case CalendarFormatType::DateTime:
  51. return Detail::get_calendar_date_time_format(locale, calendar);
  52. default:
  53. VERIFY_NOT_REACHED();
  54. }
  55. #else
  56. return {};
  57. #endif
  58. }
  59. }