Selector.cpp 853 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #include <LibHTML/CSS/Selector.h>
  2. Selector::Selector(Vector<ComplexSelector>&& component_lists)
  3. : m_complex_selectors(move(component_lists))
  4. {
  5. }
  6. Selector::~Selector()
  7. {
  8. }
  9. Specificity Selector::specificity() const
  10. {
  11. unsigned ids = 0;
  12. unsigned tag_names = 0;
  13. unsigned classes = 0;
  14. for (auto& list : m_complex_selectors) {
  15. for (auto& simple_selector : list.compound_selector) {
  16. switch (simple_selector.type) {
  17. case SimpleSelector::Type::Id:
  18. ++ids;
  19. break;
  20. case SimpleSelector::Type::Class:
  21. ++classes;
  22. break;
  23. case SimpleSelector::Type::TagName:
  24. ++tag_names;
  25. break;
  26. default:
  27. break;
  28. }
  29. }
  30. }
  31. return { ids, classes, tag_names };
  32. }