Create element classes dynamically and register them. Generates classes for all standard HTML elements, using the appropriate base class (ContainerElement or Element) for each tag.
()
| 1332 | |
| 1333 | |
| 1334 | def _create_element_classes(): |
| 1335 | """ |
| 1336 | Create element classes dynamically and register them. |
| 1337 | |
| 1338 | Generates classes for all standard HTML elements, using the appropriate |
| 1339 | base class (ContainerElement or Element) for each tag. |
| 1340 | """ |
| 1341 | # The existing special element classes defined above. |
| 1342 | classes = [canvas, video, datalist, optgroup, select] |
| 1343 | for tag in CONTAINER_TAGS: |
| 1344 | # Tags that clash with Python keywords get a trailing underscore. |
| 1345 | class_name = f"{tag}_" if tag in ("del", "map", "object") else tag |
| 1346 | doc = ( |
| 1347 | f"HTML <{tag}> element. " |
| 1348 | f"Ref: https://developer.mozilla.org/en-US/docs/Web/HTML/" |
| 1349 | f"Element/{tag}" |
| 1350 | ) |
| 1351 | cls = type(class_name, (ContainerElement,), {"__doc__": doc}) |
| 1352 | globals()[class_name] = cls |
| 1353 | classes.append(cls) |
| 1354 | for tag in VOID_TAGS: |
| 1355 | class_name = f"{tag}_" if tag == "input" else tag |
| 1356 | doc = ( |
| 1357 | f"HTML <{tag}> element. " |
| 1358 | f"Ref: https://developer.mozilla.org/en-US/docs/Web/HTML/" |
| 1359 | f"Element/{tag}" |
| 1360 | ) |
| 1361 | cls = type(class_name, (Element,), {"__doc__": doc}) |
| 1362 | globals()[class_name] = cls |
| 1363 | classes.append(cls) |
| 1364 | Element.register_element_classes(classes) |
| 1365 | |
| 1366 | |
| 1367 | # Initialize element classes at module load time. :-) |
no test coverage detected