| 
									
										
										
										
											2023-12-11 15:36:59 +01:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Copyright (c) 2023, stelar7 <dudedbz@gmail.com> | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * SPDX-License-Identifier: BSD-2-Clause | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <AK/Forward.h>
 | 
					
						
							|  |  |  | #include <AK/String.h>
 | 
					
						
							| 
									
										
										
										
											2023-12-15 18:23:29 +01:00
										 |  |  | #include <LibJS/Runtime/Date.h>
 | 
					
						
							|  |  |  | #include <LibWeb/WebIDL/ExceptionOr.h>
 | 
					
						
							| 
									
										
										
										
											2023-12-11 15:36:59 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace Web::HTML { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | u32 week_number_of_the_last_day(u64 year); | 
					
						
							|  |  |  | bool is_valid_week_string(StringView value); | 
					
						
							|  |  |  | bool is_valid_month_string(StringView value); | 
					
						
							|  |  |  | bool is_valid_date_string(StringView value); | 
					
						
							|  |  |  | bool is_valid_local_date_and_time_string(StringView value); | 
					
						
							|  |  |  | String normalize_local_date_and_time_string(String const& value); | 
					
						
							|  |  |  | bool is_valid_time_string(StringView value); | 
					
						
							| 
									
										
										
										
											2024-11-15 04:01:23 +13:00
										 |  |  | WebIDL::ExceptionOr<GC::Ref<JS::Date>> parse_time_string(JS::Realm& realm, StringView value); | 
					
						
							| 
									
										
										
										
											2023-12-11 15:36:59 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-02-07 14:27:21 +13:00
										 |  |  | struct YearAndMonth { | 
					
						
							|  |  |  |     u32 year; | 
					
						
							|  |  |  |     u32 month; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | Optional<YearAndMonth> parse_a_month_string(StringView); | 
					
						
							| 
									
										
										
										
											2025-02-07 17:24:35 +13:00
										 |  |  | 
 | 
					
						
							|  |  |  | struct WeekYearAndWeek { | 
					
						
							|  |  |  |     u32 week_year; | 
					
						
							|  |  |  |     u32 week; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | Optional<WeekYearAndWeek> parse_a_week_string(StringView); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-02-23 23:34:06 +13:00
										 |  |  | struct YearMonthDay { | 
					
						
							|  |  |  |     u32 year; | 
					
						
							|  |  |  |     u32 month; | 
					
						
							|  |  |  |     u32 day; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Optional<YearMonthDay> parse_a_date_string(StringView); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-02-07 14:27:21 +13:00
										 |  |  | i32 number_of_months_since_unix_epoch(YearAndMonth); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-11 15:36:59 +01:00
										 |  |  | } |