Source code for oi_cli2.utils.HtmlTag

# TODO remove full file replace with new implement
import typing
from bs4 import element

from oi_cli2.abstract.HtmlTagAbstract import HtmlTagAbstract
from oi_cli2.utils.HttpUtil import HttpUtil


[docs]class HtmlTag(HtmlTagAbstract): def __init__(self, http_util: HttpUtil): super().__init__(http_util)
[docs] @typing.no_type_check def update_tag(self, tag, oj_prefix: str, update_style=None): """ :param tag: 一个顶级tag,从这个tag递归遍历所有子tag,寻找需要修改url的节点 :param oj_prefix: 原oj的静态文件前缀 :param update_style: 不为空的话,递归修改内联style :return: 成功返回原tag,失败返回None """ if type(tag) == element.Tag: for child in tag.descendants: if type(child) != element.Tag: continue if update_style: child['style'] = update_style if child.name == 'a' and child.get('href'): if not child.get('class'): child['class'] = () child['class'] += (HtmlTag.TagDesc.ANCHOR.value, ) child['target'] = ('_blank', '_parent') child['href'] = self.http_util.abs_url(child.get('href'), oj_prefix=oj_prefix)[-1] if child.name == 'img' and child.get('src'): if not child.get('class'): child['class'] = () child['class'] += (HtmlTag.TagDesc.IMAGE.value, ) child['src'] = self.http_util.abs_url(child.get('src'), oj_prefix=oj_prefix)[-1] return tag