1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 02:47:34 +00:00

LibWeb: Add direct StyleComponentValueRule constructors

Rather than passing a ComponentType, and then manually modifying the
data fields, we now create them initialized.

The constructor that takes a Token is intentionally left implicit,
so that we can automatically convert when using the TokenStream later.
This commit is contained in:
Sam Atkins 2021-07-03 14:54:19 +01:00 committed by Andreas Kling
parent 82d12b170a
commit 8671d79ba4
3 changed files with 22 additions and 20 deletions

View file

@ -559,21 +559,13 @@ StyleComponentValueRule Parser::consume_a_component_value()
{ {
auto token = next_token(); auto token = next_token();
if (token.is_open_curly() || token.is_open_square() || token.is_open_paren()) { if (token.is_open_curly() || token.is_open_square() || token.is_open_paren())
auto component = StyleComponentValueRule(StyleComponentValueRule::ComponentType::Block); return StyleComponentValueRule(consume_a_simple_block());
component.m_block = consume_a_simple_block();
return component;
}
if (token.is_function()) { if (token.is_function())
auto component = StyleComponentValueRule(StyleComponentValueRule::ComponentType::Function); return StyleComponentValueRule(consume_a_function());
component.m_function = consume_a_function();
return component;
}
auto component = StyleComponentValueRule(StyleComponentValueRule::ComponentType::Token); return StyleComponentValueRule(token);
component.m_token = token;
return component;
} }
NonnullRefPtr<StyleBlockRule> Parser::consume_a_simple_block() NonnullRefPtr<StyleBlockRule> Parser::consume_a_simple_block()
@ -722,10 +714,7 @@ Vector<DeclarationOrAtRule> Parser::consume_a_list_of_declarations()
if (token.is_ident()) { if (token.is_ident()) {
Vector<StyleComponentValueRule> temp; Vector<StyleComponentValueRule> temp;
temp.append(StyleComponentValueRule(token));
auto component = StyleComponentValueRule(StyleComponentValueRule::ComponentType::Token);
component.m_token = token;
temp.append(component);
for (;;) { for (;;) {
auto peek = peek_token(); auto peek = peek_token();

View file

@ -26,7 +26,9 @@ public:
Block Block
}; };
explicit StyleComponentValueRule(ComponentType); StyleComponentValueRule(Token);
explicit StyleComponentValueRule(NonnullRefPtr<StyleFunctionRule>);
explicit StyleComponentValueRule(NonnullRefPtr<StyleBlockRule>);
~StyleComponentValueRule(); ~StyleComponentValueRule();
bool is_block() const { return m_type == ComponentType::Block; } bool is_block() const { return m_type == ComponentType::Block; }

View file

@ -35,8 +35,19 @@ StyleRule::~StyleRule() { }
StyleBlockRule::StyleBlockRule() { } StyleBlockRule::StyleBlockRule() { }
StyleBlockRule::~StyleBlockRule() { } StyleBlockRule::~StyleBlockRule() { }
StyleComponentValueRule::StyleComponentValueRule(ComponentType type) StyleComponentValueRule::StyleComponentValueRule(Token token)
: m_type(type) : m_type(StyleComponentValueRule::ComponentType::Token)
, m_token(token)
{
}
StyleComponentValueRule::StyleComponentValueRule(NonnullRefPtr<StyleFunctionRule> function)
: m_type(StyleComponentValueRule::ComponentType::Function)
, m_function(function)
{
}
StyleComponentValueRule::StyleComponentValueRule(NonnullRefPtr<StyleBlockRule> block)
: m_type(StyleComponentValueRule::ComponentType::Block)
, m_block(block)
{ {
} }
StyleComponentValueRule::~StyleComponentValueRule() { } StyleComponentValueRule::~StyleComponentValueRule() { }