123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- /*
- * Copyright (c) 2022, Tim Flynn <trflynn89@serenityos.org>
- *
- * SPDX-License-Identifier: BSD-2-Clause
- */
- #include <LibJS/Runtime/Intl/Collator.h>
- namespace JS::Intl {
- // 10 Collator Objects, https://tc39.es/ecma402/#collator-objects
- Collator::Collator(Object& prototype)
- : Object(ConstructWithPrototypeTag::Tag, prototype)
- {
- }
- void Collator::set_usage(StringView type)
- {
- if (type == "sort"sv)
- m_usage = Usage::Sort;
- else if (type == "search"sv)
- m_usage = Usage::Search;
- else
- VERIFY_NOT_REACHED();
- }
- StringView Collator::usage_string() const
- {
- switch (m_usage) {
- case Usage::Sort:
- return "sort"sv;
- case Usage::Search:
- return "search"sv;
- default:
- VERIFY_NOT_REACHED();
- }
- }
- void Collator::set_sensitivity(StringView type)
- {
- if (type == "base"sv)
- m_sensitivity = Sensitivity::Base;
- else if (type == "accent"sv)
- m_sensitivity = Sensitivity::Accent;
- else if (type == "case"sv)
- m_sensitivity = Sensitivity::Case;
- else if (type == "variant"sv)
- m_sensitivity = Sensitivity::Variant;
- else
- VERIFY_NOT_REACHED();
- }
- StringView Collator::sensitivity_string() const
- {
- switch (m_sensitivity) {
- case Sensitivity::Base:
- return "base"sv;
- case Sensitivity::Accent:
- return "accent"sv;
- case Sensitivity::Case:
- return "case"sv;
- case Sensitivity::Variant:
- return "variant"sv;
- default:
- VERIFY_NOT_REACHED();
- }
- }
- void Collator::set_case_first(StringView case_first)
- {
- if (case_first == "upper"sv)
- m_case_first = CaseFirst::Upper;
- else if (case_first == "lower"sv)
- m_case_first = CaseFirst::Lower;
- else if (case_first == "false"sv)
- m_case_first = CaseFirst::False;
- else
- VERIFY_NOT_REACHED();
- }
- StringView Collator::case_first_string() const
- {
- switch (m_case_first) {
- case CaseFirst::Upper:
- return "upper"sv;
- case CaseFirst::Lower:
- return "lower"sv;
- case CaseFirst::False:
- return "false"sv;
- default:
- VERIFY_NOT_REACHED();
- }
- }
- void Collator::visit_edges(Visitor& visitor)
- {
- Base::visit_edges(visitor);
- visitor.visit(m_bound_compare);
- }
- }
|