25 lines
1.3 KiB
Python
25 lines
1.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
import io, re, sys
|
|
for f in sys.argv[1:]:
|
|
c = io.open(f, encoding='utf-8').read()
|
|
print('===', f.replace('\\', '/').split('/')[-1])
|
|
print(' oj-explains:', c.count('class="oj-explains"'),
|
|
'| prob-detail:', c.count('class="prob-detail"'),
|
|
'| prob-sec-h:', c.count('class="prob-sec-h"'))
|
|
print(' ★star leftover:', c.count('star-rating'), c.count('class="star '),
|
|
'| backdrop-filter:', c.count('backdrop-filter'))
|
|
print(' student-card display:none:', '.student-card { display: none; }' in c,
|
|
'| active block:', '.student-card.active { display: block; position: relative; pointer-events: auto; }' in c)
|
|
opens = c.count('<div'); closes = c.count('</div>')
|
|
print(' div balance:', opens, '/', closes, 'OK' if opens == closes else 'MISMATCH')
|
|
mjs = re.search(r'<script[^>]*>(.*)</script>', c, re.S)
|
|
js = mjs.group(1)
|
|
print(' js braces:', js.count('{'), '/', js.count('}'),
|
|
'parens:', js.count('('), '/', js.count(')'))
|
|
print(' toggleProb present:', 'function toggleProb' in c)
|
|
# which student owns first panel
|
|
m = re.search(r'data-oj-section="([^"]+)">', c)
|
|
first_stu = m.group(1) if m else '?'
|
|
idx = c.find(first_stu)
|
|
print(' first student:', first_stu)
|