Serenity Operating System
1/*
2 * Copyright (c) 2020-2021, the SerenityOS developers.
3 * Copyright (c) 2021-2023, Sam Atkins <atkinssj@serenityos.org>
4 *
5 * SPDX-License-Identifier: BSD-2-Clause
6 */
7
8#include <LibWeb/CSS/Parser/Block.h>
9#include <LibWeb/CSS/Parser/ComponentValue.h>
10#include <LibWeb/CSS/Parser/Function.h>
11
12namespace Web::CSS::Parser {
13
14ComponentValue::ComponentValue(Token token)
15 : m_value(token)
16{
17}
18ComponentValue::ComponentValue(NonnullRefPtr<Function> function)
19 : m_value(function)
20{
21}
22ComponentValue::ComponentValue(NonnullRefPtr<Block> block)
23 : m_value(block)
24{
25}
26
27ComponentValue::~ComponentValue() = default;
28
29ErrorOr<String> ComponentValue::to_string() const
30{
31 return m_value.visit(
32 [](Token const& token) { return token.to_string(); },
33 [](NonnullRefPtr<Block> const& block) { return block->to_string(); },
34 [](NonnullRefPtr<Function> const& function) { return function->to_string(); });
35}
36
37ErrorOr<String> ComponentValue::to_debug_string() const
38{
39 return m_value.visit(
40 [](Token const& token) -> ErrorOr<String> {
41 return String::formatted("Token: {}", TRY(token.to_debug_string()));
42 },
43 [](NonnullRefPtr<Block> const& block) -> ErrorOr<String> {
44 return String::formatted("Block: {}", TRY(block->to_string()));
45 },
46 [](NonnullRefPtr<Function> const& function) -> ErrorOr<String> {
47 return String::formatted("Function: {}", TRY(function->to_string()));
48 });
49}
50
51}