| 
									
										
										
										
											2021-10-06 14:27:13 +01:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2023-02-14 20:50:41 +00:00
										 |  |  |  * Copyright (c) 2021-2023, Sam Atkins <atkinssj@serenityos.org> | 
					
						
							| 
									
										
										
										
											2021-10-06 14:27:13 +01:00
										 |  |  |  * | 
					
						
							|  |  |  |  * SPDX-License-Identifier: BSD-2-Clause | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-06 19:02:26 +01:00
										 |  |  | #include <AK/String.h>
 | 
					
						
							| 
									
										
										
										
											2021-10-14 16:50:43 +01:00
										 |  |  | #include <AK/StringBuilder.h>
 | 
					
						
							| 
									
										
										
										
											2021-10-06 14:27:13 +01:00
										 |  |  | #include <AK/StringView.h>
 | 
					
						
							| 
									
										
										
										
											2022-09-11 12:20:16 -04:00
										 |  |  | #include <AK/Vector.h>
 | 
					
						
							| 
									
										
										
										
											2022-07-12 15:30:13 +01:00
										 |  |  | #include <LibGfx/Color.h>
 | 
					
						
							| 
									
										
										
										
											2023-12-09 23:30:01 +01:00
										 |  |  | #include <LibGfx/Font/UnicodeRange.h>
 | 
					
						
							| 
									
										
										
										
											2021-10-06 14:27:13 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace Web::CSS { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-22 12:05:44 +01:00
										 |  |  | void escape_a_character(StringBuilder&, u32 character); | 
					
						
							|  |  |  | void escape_a_character_as_code_point(StringBuilder&, u32 character); | 
					
						
							|  |  |  | void serialize_an_identifier(StringBuilder&, StringView ident); | 
					
						
							|  |  |  | void serialize_a_string(StringBuilder&, StringView string); | 
					
						
							|  |  |  | void serialize_a_url(StringBuilder&, StringView url); | 
					
						
							|  |  |  | void serialize_a_local(StringBuilder&, StringView path); | 
					
						
							| 
									
										
										
										
											2023-12-09 23:30:01 +01:00
										 |  |  | void serialize_unicode_ranges(StringBuilder&, Vector<Gfx::UnicodeRange> const& unicode_ranges); | 
					
						
							| 
									
										
										
										
											2023-08-22 12:05:44 +01:00
										 |  |  | void serialize_a_srgb_value(StringBuilder&, Color color); | 
					
						
							| 
									
										
										
										
											2021-10-14 16:50:43 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-22 12:05:44 +01:00
										 |  |  | String escape_a_character(u32 character); | 
					
						
							|  |  |  | String escape_a_character_as_code_point(u32 character); | 
					
						
							|  |  |  | String serialize_an_identifier(StringView ident); | 
					
						
							|  |  |  | String serialize_a_string(StringView string); | 
					
						
							|  |  |  | String serialize_a_url(StringView url); | 
					
						
							|  |  |  | String serialize_a_srgb_value(Color color); | 
					
						
							| 
									
										
										
										
											2021-10-06 14:27:13 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-11 12:20:16 -04:00
										 |  |  | template<typename T, typename SerializeItem> | 
					
						
							| 
									
										
										
										
											2023-08-22 12:05:44 +01:00
										 |  |  | void serialize_a_comma_separated_list(StringBuilder& builder, Vector<T> const& items, SerializeItem serialize_item) | 
					
						
							| 
									
										
										
										
											2022-09-11 12:20:16 -04:00
										 |  |  | { | 
					
						
							|  |  |  |     for (size_t i = 0; i < items.size(); i++) { | 
					
						
							|  |  |  |         auto& item = items.at(i); | 
					
						
							| 
									
										
										
										
											2023-08-22 12:05:44 +01:00
										 |  |  |         serialize_item(builder, item); | 
					
						
							| 
									
										
										
										
											2022-09-11 12:20:16 -04:00
										 |  |  |         if ((i + 1) < items.size()) { | 
					
						
							| 
									
										
										
										
											2023-08-22 12:05:44 +01:00
										 |  |  |             builder.append(",\n"sv); | 
					
						
							| 
									
										
										
										
											2022-09-11 12:20:16 -04:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-06 14:27:13 +01:00
										 |  |  | } |