1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 01:37:35 +00:00

LibJS: Implement the Intl.DisplayNames constructor

There is notably FIXME notations in this commit regarding Unicode locale
extensions. We are not parsing extensions (or private use extensions) at
all yet.
This commit is contained in:
Timothy Flynn 2021-08-24 22:58:45 -04:00 committed by Linus Groh
parent 1c2ac69e3c
commit e8dd2eea74
7 changed files with 538 additions and 0 deletions

View file

@ -0,0 +1,32 @@
/*
* Copyright (c) 2021, Tim Flynn <trflynn89@pm.me>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/String.h>
#include <AK/Variant.h>
#include <AK/Vector.h>
#include <LibJS/Forward.h>
#include <LibJS/Runtime/Intl/DisplayNames.h>
#include <LibJS/Runtime/Value.h>
namespace JS::Intl {
using Fallback = Variant<Empty, bool, StringView>;
struct LocaleOptions {
Value locale_matcher;
};
struct LocaleResult {
String locale;
};
Vector<String> canonicalize_locale_list(GlobalObject&, Value locales);
Value get_option(GlobalObject& global_object, Value options, PropertyName const& property, Value::Type type, Vector<StringView> const& values, Fallback fallback);
LocaleResult resolve_locale(Vector<String> const& requested_locales, LocaleOptions const& options, Vector<StringView> relevant_extension_keys);
}