import re
# Extract all class names from HTML
with open("index.html", encoding="utf-8") as f:
html = f.read()
html_classes = set()
for m in re.finditer(r'class="([^"]+)"', html):
for c in m.group(1).split():
html_classes.add(c)
# Extract all class selectors from CSS
with open("styles.css", encoding="utf-8") as f:
css = f.read()
css_classes = set()
for m in re.finditer(r"\.([\w-]+)", css):
css_classes.add(m.group(1))
# Also check app.js for dynamically-generated classes
with open("app.js", encoding="utf-8") as f:
js = f.read()
for m in re.finditer(r'class="([^"]+)"', js):
for c in m.group(1).split():
html_classes.add(c)
for m in re.finditer(r"class=\"([^\"]+)\"", js):
for c in m.group(1).split():
html_classes.add(c)
for m in re.finditer(r'classList\.add\("([^"]+)"\)', js):
html_classes.add(m.group(1))
for m in re.finditer(r"classList\.add\(\"([^\"]+)\"\)", js):
html_classes.add(m.group(1))
for m in re.finditer(r'className\s*=\s*[`"\']([^`"\']+)[`"\']', js):
for c in m.group(1).split():
if not c.startswith("$"):
html_classes.add(c)
missing = sorted(html_classes - css_classes)
print("HTML/JS classes NOT found in CSS:")
for c in missing:
print(f" .{c}")
print(f"\nTotal missing: {len(missing)}")