Display.cpp 3.1 KB

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