@@ -44,12 +44,13 @@ std::vector<std::pair<std::string, std::string>> matching_rules(
return matched_rules;
}
StyledNode style_tree(std::reference_wrapper<dom::Node const> root, std::vector<css::Rule> const &stylesheet) {
namespace {
StyledNode style_tree_impl(std::reference_wrapper<dom::Node const> root, std::vector<css::Rule> const &stylesheet) {
std::vector<StyledNode> children{};
if (auto const *element = std::get_if<dom::Element>(&root.get())) {
for (auto const &child : element->children) {
children.push_back(style_tree(child, stylesheet));
children.push_back(style_tree_impl(child, stylesheet));
}
}
@@ -63,5 +64,11 @@ StyledNode style_tree(std::reference_wrapper<dom::Node const> root, std::vector<
.children = std::move(children),
};
}
} // namespace
std::unique_ptr<StyledNode> style_tree(
std::reference_wrapper<dom::Node const> root, std::vector<css::Rule> const &stylesheet) {
return std::make_unique<StyledNode>(style_tree_impl(root, stylesheet));
}
} // namespace style