| 
									
										
										
										
											2022-02-13 01:02:00 +01:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2024-10-04 13:19:50 +02:00
										 |  |  |  * Copyright (c) 2022, Andreas Kling <andreas@ladybird.org> | 
					
						
							| 
									
										
										
										
											2022-02-13 01:02:00 +01:00
										 |  |  |  * | 
					
						
							|  |  |  |  * SPDX-License-Identifier: BSD-2-Clause | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <LibWeb/CSS/Display.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Web::CSS { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-22 12:25:30 +01:00
										 |  |  | String Display::to_string() const | 
					
						
							| 
									
										
										
										
											2022-02-13 01:02:00 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     StringBuilder builder; | 
					
						
							|  |  |  |     switch (m_type) { | 
					
						
							|  |  |  |     case Type::OutsideAndInside: | 
					
						
							| 
									
										
										
										
											2023-09-09 12:04:30 +01:00
										 |  |  |         // NOTE: Following the precedence rules of “most backwards-compatible, then shortest”,
 | 
					
						
							|  |  |  |         //       serialization of equivalent display values uses the “Short display” column.
 | 
					
						
							|  |  |  |         if (*this == Display::from_short(Display::Short::Block)) | 
					
						
							|  |  |  |             return "block"_string; | 
					
						
							|  |  |  |         if (*this == Display::from_short(Display::Short::FlowRoot)) | 
					
						
							|  |  |  |             return "flow-root"_string; | 
					
						
							|  |  |  |         if (*this == Display::from_short(Display::Short::Inline)) | 
					
						
							|  |  |  |             return "inline"_string; | 
					
						
							|  |  |  |         if (*this == Display::from_short(Display::Short::InlineBlock)) | 
					
						
							|  |  |  |             return "inline-block"_string; | 
					
						
							|  |  |  |         if (*this == Display::from_short(Display::Short::RunIn)) | 
					
						
							|  |  |  |             return "run-in"_string; | 
					
						
							|  |  |  |         if (*this == Display::from_short(Display::Short::ListItem)) | 
					
						
							|  |  |  |             return "list-item"_string; | 
					
						
							|  |  |  |         if (*this == Display::from_short(Display::Short::Flex)) | 
					
						
							|  |  |  |             return "flex"_string; | 
					
						
							|  |  |  |         if (*this == Display::from_short(Display::Short::InlineFlex)) | 
					
						
							|  |  |  |             return "inline-flex"_string; | 
					
						
							|  |  |  |         if (*this == Display::from_short(Display::Short::Grid)) | 
					
						
							|  |  |  |             return "grid"_string; | 
					
						
							|  |  |  |         if (*this == Display::from_short(Display::Short::InlineGrid)) | 
					
						
							|  |  |  |             return "inline-grid"_string; | 
					
						
							|  |  |  |         if (*this == Display::from_short(Display::Short::Ruby)) | 
					
						
							|  |  |  |             return "ruby"_string; | 
					
						
							|  |  |  |         if (*this == Display::from_short(Display::Short::Table)) | 
					
						
							|  |  |  |             return "table"_string; | 
					
						
							|  |  |  |         if (*this == Display::from_short(Display::Short::InlineTable)) | 
					
						
							|  |  |  |             return "inline-table"_string; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-04 17:39:15 +01:00
										 |  |  |         builder.append(CSS::to_string(m_value.outside_inside.outside)); | 
					
						
							| 
									
										
										
										
											2023-08-22 12:25:30 +01:00
										 |  |  |         builder.append(' '); | 
					
						
							| 
									
										
										
										
											2023-09-04 17:39:15 +01:00
										 |  |  |         builder.append(CSS::to_string(m_value.outside_inside.inside)); | 
					
						
							| 
									
										
										
										
											2022-02-13 01:02:00 +01:00
										 |  |  |         if (m_value.outside_inside.list_item == ListItem::Yes) | 
					
						
							| 
									
										
										
										
											2023-08-22 12:25:30 +01:00
										 |  |  |             builder.append(" list-item"sv); | 
					
						
							| 
									
										
										
										
											2022-02-13 01:02:00 +01:00
										 |  |  |         break; | 
					
						
							|  |  |  |     case Type::Internal: | 
					
						
							| 
									
										
										
										
											2023-09-04 17:39:15 +01:00
										 |  |  |         builder.append(CSS::to_string(m_value.internal)); | 
					
						
							| 
									
										
										
										
											2022-02-13 01:02:00 +01:00
										 |  |  |         break; | 
					
						
							|  |  |  |     case Type::Box: | 
					
						
							| 
									
										
										
										
											2023-09-04 17:39:15 +01:00
										 |  |  |         builder.append(CSS::to_string(m_value.box)); | 
					
						
							| 
									
										
										
										
											2022-02-13 01:02:00 +01:00
										 |  |  |         break; | 
					
						
							|  |  |  |     }; | 
					
						
							| 
									
										
										
										
											2023-08-22 12:25:30 +01:00
										 |  |  |     return MUST(builder.to_string()); | 
					
						
							| 
									
										
										
										
											2022-02-13 01:02:00 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |