PluralRules.cpp 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /*
  2. * Copyright (c) 2022-2024, Tim Flynn <trflynn89@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibUnicode/PluralRules.h>
  7. namespace Unicode {
  8. PluralForm plural_form_from_string(StringView plural_form)
  9. {
  10. if (plural_form == "cardinal"sv)
  11. return PluralForm::Cardinal;
  12. if (plural_form == "ordinal"sv)
  13. return PluralForm::Ordinal;
  14. VERIFY_NOT_REACHED();
  15. }
  16. StringView plural_form_to_string(PluralForm plural_form)
  17. {
  18. switch (plural_form) {
  19. case PluralForm::Cardinal:
  20. return "cardinal"sv;
  21. case PluralForm::Ordinal:
  22. return "ordinal"sv;
  23. }
  24. VERIFY_NOT_REACHED();
  25. }
  26. PluralCategory plural_category_from_string(StringView category)
  27. {
  28. if (category == "other"sv)
  29. return PluralCategory::Other;
  30. if (category == "zero"sv)
  31. return PluralCategory::Zero;
  32. if (category == "one"sv)
  33. return PluralCategory::One;
  34. if (category == "two"sv)
  35. return PluralCategory::Two;
  36. if (category == "few"sv)
  37. return PluralCategory::Few;
  38. if (category == "many"sv)
  39. return PluralCategory::Many;
  40. if (category == "0"sv)
  41. return PluralCategory::ExactlyZero;
  42. if (category == "1"sv)
  43. return PluralCategory::ExactlyOne;
  44. VERIFY_NOT_REACHED();
  45. }
  46. StringView plural_category_to_string(PluralCategory category)
  47. {
  48. switch (category) {
  49. case PluralCategory::Other:
  50. return "other"sv;
  51. case PluralCategory::Zero:
  52. return "zero"sv;
  53. case PluralCategory::One:
  54. return "one"sv;
  55. case PluralCategory::Two:
  56. return "two"sv;
  57. case PluralCategory::Few:
  58. return "few"sv;
  59. case PluralCategory::Many:
  60. return "many"sv;
  61. case PluralCategory::ExactlyZero:
  62. return "0"sv;
  63. case PluralCategory::ExactlyOne:
  64. return "1"sv;
  65. }
  66. VERIFY_NOT_REACHED();
  67. }
  68. }