| 
									
										
										
										
											2020-05-26 23:27:22 +02:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Copyright (c) 2020, Andreas Kling <kling@serenityos.org> | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2021-04-22 01:24:48 -07:00
										 |  |  |  * SPDX-License-Identifier: BSD-2-Clause | 
					
						
							| 
									
										
										
										
											2020-05-26 23:27:22 +02:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-12 14:46:53 +02:00
										 |  |  | #include <LibWeb/HTML/AttributeNames.h>
 | 
					
						
							| 
									
										
										
										
											2020-05-26 23:27:22 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-11 13:49:08 -04:00
										 |  |  | namespace Web::HTML { | 
					
						
							| 
									
										
										
										
											2020-05-26 23:27:22 +02:00
										 |  |  | namespace AttributeNames { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-08 11:42:00 +13:00
										 |  |  | #define __ENUMERATE_HTML_ATTRIBUTE(name) FlyString name;
 | 
					
						
							| 
									
										
										
										
											2020-06-03 20:51:28 +02:00
										 |  |  | ENUMERATE_HTML_ATTRIBUTES | 
					
						
							|  |  |  | #undef __ENUMERATE_HTML_ATTRIBUTE
 | 
					
						
							| 
									
										
										
										
											2020-05-26 23:27:22 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-07 12:07:35 +02:00
										 |  |  | void initialize_strings() | 
					
						
							| 
									
										
										
										
											2020-05-26 23:27:22 +02:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2020-05-27 05:22:50 +02:00
										 |  |  |     static bool s_initialized = false; | 
					
						
							| 
									
										
										
										
											2023-03-18 10:39:37 -04:00
										 |  |  |     VERIFY(!s_initialized); | 
					
						
							| 
									
										
										
										
											2020-06-03 20:51:28 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #define __ENUMERATE_HTML_ATTRIBUTE(name) \
 | 
					
						
							| 
									
										
										
										
											2023-10-08 11:42:00 +13:00
										 |  |  |     name = #name##_fly_string; | 
					
						
							| 
									
										
										
										
											2020-06-03 20:51:28 +02:00
										 |  |  |     ENUMERATE_HTML_ATTRIBUTES | 
					
						
							|  |  |  | #undef __ENUMERATE_HTML_ATTRIBUTE
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-12 04:16:41 +00:00
										 |  |  |     // NOTE: Special cases for C++ keywords.
 | 
					
						
							| 
									
										
										
										
											2023-10-08 11:42:00 +13:00
										 |  |  |     class_ = "class"_fly_string; | 
					
						
							|  |  |  |     for_ = "for"_fly_string; | 
					
						
							|  |  |  |     default_ = "default"_fly_string; | 
					
						
							|  |  |  |     char_ = "char"_fly_string; | 
					
						
							| 
									
										
										
										
											2020-08-09 17:10:41 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // NOTE: Special cases for attributes with dashes in them.
 | 
					
						
							| 
									
										
										
										
											2023-10-08 11:42:00 +13:00
										 |  |  |     accept_charset = "accept-charset"_fly_string; | 
					
						
							|  |  |  |     http_equiv = "http-equiv"_fly_string; | 
					
						
							| 
									
										
										
										
											2020-06-03 20:51:28 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-26 23:27:22 +02:00
										 |  |  |     s_initialized = true; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2022-11-10 08:47:01 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | // https://html.spec.whatwg.org/#boolean-attribute
 | 
					
						
							| 
									
										
										
										
											2023-10-08 11:42:00 +13:00
										 |  |  | bool is_boolean_attribute(FlyString const& attribute) | 
					
						
							| 
									
										
										
										
											2022-11-10 08:47:01 -05:00
										 |  |  | { | 
					
						
							|  |  |  |     // NOTE: This is the list of attributes from https://html.spec.whatwg.org/#attributes-3
 | 
					
						
							|  |  |  |     //       with a Value column value of "Boolean attribute".
 | 
					
						
							|  |  |  |     return attribute.is_one_of( | 
					
						
							|  |  |  |         AttributeNames::allowfullscreen, | 
					
						
							|  |  |  |         AttributeNames::async, | 
					
						
							|  |  |  |         AttributeNames::autofocus, | 
					
						
							|  |  |  |         AttributeNames::autoplay, | 
					
						
							|  |  |  |         AttributeNames::checked, | 
					
						
							|  |  |  |         AttributeNames::controls, | 
					
						
							|  |  |  |         AttributeNames::default_, | 
					
						
							|  |  |  |         AttributeNames::defer, | 
					
						
							|  |  |  |         AttributeNames::disabled, | 
					
						
							|  |  |  |         AttributeNames::formnovalidate, | 
					
						
							|  |  |  |         AttributeNames::inert, | 
					
						
							|  |  |  |         AttributeNames::ismap, | 
					
						
							|  |  |  |         AttributeNames::itemscope, | 
					
						
							|  |  |  |         AttributeNames::loop, | 
					
						
							|  |  |  |         AttributeNames::multiple, | 
					
						
							|  |  |  |         AttributeNames::muted, | 
					
						
							|  |  |  |         AttributeNames::nomodule, | 
					
						
							|  |  |  |         AttributeNames::novalidate, | 
					
						
							|  |  |  |         AttributeNames::open, | 
					
						
							|  |  |  |         AttributeNames::playsinline, | 
					
						
							|  |  |  |         AttributeNames::readonly, | 
					
						
							|  |  |  |         AttributeNames::required, | 
					
						
							|  |  |  |         AttributeNames::reversed, | 
					
						
							|  |  |  |         AttributeNames::selected); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-26 23:27:22 +02:00
										 |  |  | } |