| 
									
										
										
										
											2022-01-28 12:56:04 -05:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2024-06-09 14:36:48 -04:00
										 |  |  |  * Copyright (c) 2022-2024, Tim Flynn <trflynn89@serenityos.org> | 
					
						
							| 
									
										
										
										
											2022-01-28 12:56:04 -05:00
										 |  |  |  * | 
					
						
							|  |  |  |  * SPDX-License-Identifier: BSD-2-Clause | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <AK/StringView.h>
 | 
					
						
							| 
									
										
										
										
											2022-07-11 11:28:10 -04:00
										 |  |  | #include <LibJS/Runtime/Completion.h>
 | 
					
						
							| 
									
										
										
										
											2022-01-28 12:56:04 -05:00
										 |  |  | #include <LibJS/Runtime/Intl/NumberFormat.h>
 | 
					
						
							|  |  |  | #include <LibJS/Runtime/Object.h>
 | 
					
						
							| 
									
										
										
										
											2022-09-02 12:11:30 -04:00
										 |  |  | #include <LibLocale/PluralRules.h>
 | 
					
						
							| 
									
										
										
										
											2022-01-28 12:56:04 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace JS::Intl { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PluralRules final : public NumberFormatBase { | 
					
						
							|  |  |  |     JS_OBJECT(PluralRules, NumberFormatBase); | 
					
						
							| 
									
										
										
										
											2023-11-19 09:45:05 +01:00
										 |  |  |     JS_DECLARE_ALLOCATOR(PluralRules); | 
					
						
							| 
									
										
										
										
											2022-01-28 12:56:04 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     virtual ~PluralRules() override = default; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-02 12:01:10 -04:00
										 |  |  |     ::Locale::PluralForm type() const { return m_type; } | 
					
						
							|  |  |  |     StringView type_string() const { return ::Locale::plural_form_to_string(m_type); } | 
					
						
							|  |  |  |     void set_type(StringView type) { m_type = ::Locale::plural_form_from_string(type); } | 
					
						
							| 
									
										
										
										
											2022-01-28 12:56:04 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							| 
									
										
										
										
											2022-08-28 23:51:28 +02:00
										 |  |  |     explicit PluralRules(Object& prototype); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-02 12:01:10 -04:00
										 |  |  |     ::Locale::PluralForm m_type { ::Locale::PluralForm::Cardinal }; // [[Type]]
 | 
					
						
							| 
									
										
										
										
											2022-01-28 12:56:04 -05:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-14 14:15:28 -04:00
										 |  |  | ::Locale::PluralCategory resolve_plural(PluralRules const&, Value number); | 
					
						
							| 
									
										
										
										
											2022-09-02 12:01:10 -04:00
										 |  |  | ThrowCompletionOr<::Locale::PluralCategory> resolve_plural_range(VM&, PluralRules const&, Value start, Value end); | 
					
						
							| 
									
										
										
										
											2022-07-07 10:01:00 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-28 12:56:04 -05:00
										 |  |  | } |