Serenity Operating System
at master 105 lines 3.2 kB view raw
1/* 2 * Copyright (c) 2022, Andreas Kling <kling@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#include <LibWeb/CSS/Display.h> 8 9namespace Web::CSS { 10 11ErrorOr<String> Display::to_string() const 12{ 13 StringBuilder builder; 14 switch (m_type) { 15 case Type::OutsideAndInside: 16 switch (m_value.outside_inside.outside) { 17 case Outside::Block: 18 TRY(builder.try_append("block"sv)); 19 break; 20 case Outside::Inline: 21 TRY(builder.try_append("inline"sv)); 22 break; 23 case Outside::RunIn: 24 TRY(builder.try_append("run-in"sv)); 25 break; 26 } 27 TRY(builder.try_append(' ')); 28 switch (m_value.outside_inside.inside) { 29 case Inside::Flow: 30 TRY(builder.try_append("flow"sv)); 31 break; 32 case Inside::FlowRoot: 33 TRY(builder.try_append("flow-root"sv)); 34 break; 35 case Inside::Table: 36 TRY(builder.try_append("table"sv)); 37 break; 38 case Inside::Flex: 39 TRY(builder.try_append("flex"sv)); 40 break; 41 case Inside::Grid: 42 TRY(builder.try_append("grid"sv)); 43 break; 44 case Inside::Ruby: 45 TRY(builder.try_append("ruby"sv)); 46 break; 47 } 48 if (m_value.outside_inside.list_item == ListItem::Yes) 49 TRY(builder.try_append(" list-item"sv)); 50 break; 51 case Type::Internal: 52 switch (m_value.internal) { 53 case Internal::TableRowGroup: 54 TRY(builder.try_append("table-row-group"sv)); 55 break; 56 case Internal::TableHeaderGroup: 57 TRY(builder.try_append("table-header-group"sv)); 58 break; 59 case Internal::TableFooterGroup: 60 TRY(builder.try_append("table-footer-group"sv)); 61 break; 62 case Internal::TableRow: 63 TRY(builder.try_append("table-row"sv)); 64 break; 65 case Internal::TableCell: 66 TRY(builder.try_append("table-cell"sv)); 67 break; 68 case Internal::TableColumnGroup: 69 TRY(builder.try_append("table-column-group"sv)); 70 break; 71 case Internal::TableColumn: 72 TRY(builder.try_append("table-column"sv)); 73 break; 74 case Internal::TableCaption: 75 TRY(builder.try_append("table-caption"sv)); 76 break; 77 case Internal::RubyBase: 78 TRY(builder.try_append("ruby-base"sv)); 79 break; 80 case Internal::RubyText: 81 TRY(builder.try_append("ruby-text"sv)); 82 break; 83 case Internal::RubyBaseContainer: 84 TRY(builder.try_append("ruby-base-container"sv)); 85 break; 86 case Internal::RubyTextContainer: 87 TRY(builder.try_append("ruby-text-container"sv)); 88 break; 89 } 90 break; 91 case Type::Box: 92 switch (m_value.box) { 93 case Box::Contents: 94 TRY(builder.try_append("contents"sv)); 95 break; 96 case Box::None: 97 TRY(builder.try_append("none"sv)); 98 break; 99 } 100 break; 101 }; 102 return builder.to_string(); 103} 104 105}