from dataclasses import dataclass, field
from htmltree import *
def all_text(tree: HTMLTree) -> list:
text = []
child_text = [subtext for child in tree.children for subtext in all_text(child)]
if tree.tag == "text":
return [tree.text] + child_text
return child_text
# PROBLEM 1
def all_bold_text(tree: HTMLTree) -> list:
"""
Returns the text of all <text> tags that are descendants of <strong> tags,
as a list of strings
"""
if tree.tag == "strong":
return all_text(tree)
return [text for child in tree.children for text in all_bold_text(child)]
# PROBLEM 2
def get_longest_ul_length(tree: HTMLTree) -> int:
"""
Returns the number of entries in the longest (most children) "ul" tag in the tree
"""
longest = 0
if tree.tag == "ul":
longest = len(tree.children)
for child in tree.children:
longest_in_child = get_longest_ul_length(child)
if longest_in_child > longest:
longest = longest_in_child
return longest
# PROBLEM 3
def strong_to_emph(tree: HTMLTree):
"""
Changes all <strong> tags in the tree to <emph> tags
"""
if tree.tag == "strong":
tree.tag = "emph"
for child in tree.children:
strong_to_emph(child)