Display.cpp 2.9 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. 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. builder.append("block"sv);
  16. break;
  17. case Outside::Inline:
  18. builder.append("inline"sv);
  19. break;
  20. case Outside::RunIn:
  21. builder.append("run-in"sv);
  22. break;
  23. }
  24. builder.append(' ');
  25. switch (m_value.outside_inside.inside) {
  26. case Inside::Flow:
  27. builder.append("flow"sv);
  28. break;
  29. case Inside::FlowRoot:
  30. builder.append("flow-root"sv);
  31. break;
  32. case Inside::Table:
  33. builder.append("table"sv);
  34. break;
  35. case Inside::Flex:
  36. builder.append("flex"sv);
  37. break;
  38. case Inside::Grid:
  39. builder.append("grid"sv);
  40. break;
  41. case Inside::Ruby:
  42. builder.append("ruby"sv);
  43. break;
  44. }
  45. if (m_value.outside_inside.list_item == ListItem::Yes)
  46. builder.append(" list-item"sv);
  47. break;
  48. case Type::Internal:
  49. switch (m_value.internal) {
  50. case Internal::TableRowGroup:
  51. builder.append("table-row-group"sv);
  52. break;
  53. case Internal::TableHeaderGroup:
  54. builder.append("table-header-group"sv);
  55. break;
  56. case Internal::TableFooterGroup:
  57. builder.append("table-footer-group"sv);
  58. break;
  59. case Internal::TableRow:
  60. builder.append("table-row"sv);
  61. break;
  62. case Internal::TableCell:
  63. builder.append("table-cell"sv);
  64. break;
  65. case Internal::TableColumnGroup:
  66. builder.append("table-column-group"sv);
  67. break;
  68. case Internal::TableColumn:
  69. builder.append("table-column"sv);
  70. break;
  71. case Internal::TableCaption:
  72. builder.append("table-caption"sv);
  73. break;
  74. case Internal::RubyBase:
  75. builder.append("ruby-base"sv);
  76. break;
  77. case Internal::RubyText:
  78. builder.append("ruby-text"sv);
  79. break;
  80. case Internal::RubyBaseContainer:
  81. builder.append("ruby-base-container"sv);
  82. break;
  83. case Internal::RubyTextContainer:
  84. builder.append("ruby-text-container"sv);
  85. break;
  86. }
  87. break;
  88. case Type::Box:
  89. switch (m_value.box) {
  90. case Box::Contents:
  91. builder.append("contents"sv);
  92. break;
  93. case Box::None:
  94. builder.append("none"sv);
  95. break;
  96. }
  97. break;
  98. };
  99. return builder.to_string();
  100. }
  101. }