srctree

Robin Linden parent 70c31bc0 a447c612
style: Match .class1.class2 selectors

inlinesplit
style/style.cpp added: 7, removed: 3, total 4
@@ -138,7 +138,8 @@ bool is_match(style::StyledNode const &node, std::string_view selector) {
 
if (selector_.starts_with('.')) {
selector_.remove_prefix(1);
return has_class(element, selector_);
auto classes = util::split(selector_, ".");
return std::ranges::all_of(classes, [&](auto const &c) { return has_class(element, c); });
}
 
if (selector_.starts_with('#')) {
 
style/style_test.cpp added: 7, removed: 3, total 4
@@ -109,6 +109,9 @@ int main() {
expect(is_match(dom::Element{"div", {{"class", "myclass"}}}, ".myclass"sv));
expect(is_match(dom::Element{"div", {{"class", "first second"}}}, ".first"sv));
expect(is_match(dom::Element{"div", {{"class", "first second"}}}, ".second"sv));
 
expect(is_match(dom::Element{"div", {{"class", "first second"}}}, ".first.second"sv));
expect(!is_match(dom::Element{"div", {{"class", "first second"}}}, ".first.third"sv));
});
 
etest::test("is_match: id", [] {