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