GridTrackPlacement.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /*
  2. * Copyright (c) 2022, Martin Falisse <mfalisse@outlook.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include "GridTrackPlacement.h"
  7. #include <AK/StringBuilder.h>
  8. namespace Web::CSS {
  9. GridTrackPlacement::GridTrackPlacement(int span_count_or_position, bool has_span)
  10. : m_type(has_span ? Type::Span : Type::Position)
  11. , m_span_count_or_position(span_count_or_position)
  12. {
  13. }
  14. GridTrackPlacement::GridTrackPlacement(String line_name, int span_count_or_position, bool has_span)
  15. : m_type(has_span ? Type::Span : Type::Position)
  16. , m_span_count_or_position(span_count_or_position)
  17. , m_line_name(line_name)
  18. {
  19. }
  20. GridTrackPlacement::GridTrackPlacement(String line_name, bool has_span)
  21. : m_type(has_span ? Type::Span : Type::Position)
  22. , m_line_name(line_name)
  23. {
  24. }
  25. GridTrackPlacement::GridTrackPlacement()
  26. : m_type(Type::Auto)
  27. {
  28. }
  29. ErrorOr<String> GridTrackPlacement::to_string() const
  30. {
  31. StringBuilder builder;
  32. if (is_auto()) {
  33. builder.append("auto"sv);
  34. return builder.to_string();
  35. }
  36. if (is_span()) {
  37. builder.append("span"sv);
  38. builder.append(" "sv);
  39. }
  40. if (m_span_count_or_position != 0) {
  41. builder.append(TRY(String::number(m_span_count_or_position)));
  42. builder.append(" "sv);
  43. }
  44. if (has_line_name()) {
  45. builder.append(m_line_name);
  46. }
  47. return builder.to_string();
  48. }
  49. }