mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-13 12:31:51 +00:00
This brings parsing of grid-row-* and grid-column-* properties (and their associated shorthands) more inline with spec. Changes: - Only set omitted properties for combined-value shorthands (e.g. `grid-row: a` rather than `grid-row: a / b`) if the single value is `<custom-ident>`. - `[ [ <integer [-∞,-1]> | <integer [1,∞]> ] && <custom-ident>? ]`: - Properly resolve `calc`s for `<integer>` that rely on compute-time information. - `[ span && [ <integer [1,∞]> || <custom-ident> ] ]` - Allow `calc`s for `<integer>` - Allow `<custom-ident>` There is still work to be done to properly use these parsed values. Gains us 46 WPT tests.
41 lines
1.3 KiB
C++
41 lines
1.3 KiB
C++
/*
|
|
* Copyright (c) 2023, Aliaksandr Kalenik <kalenik.aliaksandr@gmail.com>
|
|
* Copyright (c) 2022, Martin Falisse <mfalisse@outlook.com>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include "GridTrackPlacement.h"
|
|
#include <AK/StringBuilder.h>
|
|
|
|
namespace Web::CSS {
|
|
|
|
String GridTrackPlacement::to_string() const
|
|
{
|
|
StringBuilder builder;
|
|
m_value.visit(
|
|
[&](Auto const&) {
|
|
builder.append("auto"sv);
|
|
},
|
|
[&](AreaOrLine const& area_or_line) {
|
|
if (area_or_line.line_number.has_value() && area_or_line.name.has_value()) {
|
|
builder.appendff("{} {}", area_or_line.line_number->to_string(), *area_or_line.name);
|
|
} else if (area_or_line.line_number.has_value()) {
|
|
builder.appendff("{}", area_or_line.line_number->to_string());
|
|
} else if (area_or_line.name.has_value()) {
|
|
builder.appendff("{}", *area_or_line.name);
|
|
}
|
|
},
|
|
[&](Span const& span) {
|
|
builder.append("span"sv);
|
|
|
|
if (!span.name.has_value() || span.value.is_calculated() || span.value.value() != 1)
|
|
builder.appendff(" {}", span.value.to_string());
|
|
|
|
if (span.name.has_value())
|
|
builder.appendff(" {}", span.name.value());
|
|
});
|
|
return MUST(builder.to_string());
|
|
}
|
|
|
|
}
|