diff --git a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_downgradeHeaders.py b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_downgradeHeaders.py index c35ad5a95e78ef9b944f2307f6faaffe7d790db2..5f5eb4b029a966909ed5095ec63a83566e8e7fdb 100644 --- a/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_downgradeHeaders.py +++ b/bt5/erp5_corporate_identity/SkinTemplateItem/portal_skins/erp5_corporate_identity/WebPage_downgradeHeaders.py @@ -5,17 +5,15 @@ Downgrade headers in passed content by 1 or number of levels specified """ import re -def pushDown(level): - return ''.join(["h", str(level), ">"]) +REGEXP = re.compile('<h([1-6]).*>.*</h([1-6])>') -for header in re.findall("<h[1-6].*</h[1-6]>", content or ""): - header_list = re.findall("<(h[1-6]>)", header) - if len(header_list): - tag = header_list[0] #h2> - key = tag[1] - content = content.replace( - header, - header.replace(tag, pushDown(int(key) + (downgrade or 1))) - ) +def pushDown(regexp_match): + text = '%r' % regexp_match.group() + start_level = regexp_match.group(1) + stop_level = regexp_match.group(2) + if (start_level == stop_level): + next_level = "%i" % (int(start_level) + downgrade) + text = '<h' + next_level + text[4:-3] + next_level + '>' + return text -return content +return REGEXP.sub(pushDown, content)