Serenity Operating System
at master 42 lines 1.1 kB view raw
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#pragma once 9 10#include <AK/RefCounted.h> 11#include <AK/Vector.h> 12#include <LibWeb/CSS/Parser/ComponentValue.h> 13#include <LibWeb/CSS/Parser/Token.h> 14#include <LibWeb/Forward.h> 15 16namespace Web::CSS::Parser { 17 18class Block : public RefCounted<Block> { 19public: 20 static NonnullRefPtr<Block> create(Token token, Vector<ComponentValue>&& values) 21 { 22 return adopt_ref(*new Block(move(token), move(values))); 23 } 24 25 ~Block(); 26 27 bool is_curly() const { return m_token.is(Token::Type::OpenCurly); } 28 bool is_paren() const { return m_token.is(Token::Type::OpenParen); } 29 bool is_square() const { return m_token.is(Token::Type::OpenSquare); } 30 31 Token const& token() const { return m_token; } 32 33 Vector<ComponentValue> const& values() const { return m_values; } 34 35 ErrorOr<String> to_string() const; 36 37private: 38 Block(Token, Vector<ComponentValue>&&); 39 Token m_token; 40 Vector<ComponentValue> m_values; 41}; 42}