forked from LiveCarta/BookConverter
Fix style processor error
This commit is contained in:
@@ -14,7 +14,7 @@ class InlineStyleProcessor:
|
||||
def __init__(self, tag_inline_style: Tag):
|
||||
# tag with inline style + style parsed from css file
|
||||
self.tag_inline_style = tag_inline_style
|
||||
self.tag_inline_style.attrs['style']: str = self.process_inline_style()
|
||||
self.tag_inline_style.attrs["style"]: str = self.process_inline_style()
|
||||
|
||||
@staticmethod
|
||||
def remove_white_if_no_bgcolor(style_: str, tag: Tag) -> str:
|
||||
@@ -80,19 +80,19 @@ class InlineStyleProcessor:
|
||||
processed_style = ";".join(split_style)+';'
|
||||
|
||||
margin_left_regexp = re.compile(
|
||||
r"((margin-left|margin): *(-*\w+);*)")
|
||||
r"((margin-left|margin): *-*((\d*)\.*\d+)\w+;*)")
|
||||
text_indent_regexp = re.compile(
|
||||
r"(text-indent: *(-*\w+);*)")
|
||||
r"(text-indent: *-*((\d*)\.*\d+)\w+;*)")
|
||||
|
||||
has_margin = re.search(margin_left_regexp, processed_style)
|
||||
has_text_indent = re.search(text_indent_regexp, processed_style)
|
||||
if has_margin:
|
||||
num_m = abs(int("0" + "".join(
|
||||
filter(str.isdigit, str(has_margin.group(3))))))
|
||||
filter(str.isdigit, str(has_margin.group(4))))))
|
||||
|
||||
if has_text_indent:
|
||||
num_ti = abs(int("0" + "".join(
|
||||
filter(str.isdigit, str(has_text_indent.group(2))))))
|
||||
filter(str.isdigit, str(has_text_indent.group(3))))))
|
||||
processed_style = processed_style.replace(has_text_indent.group(1), "text-indent: " +
|
||||
str(abs(num_m - num_ti)) + "px; ")
|
||||
processed_style = processed_style.replace(
|
||||
@@ -106,7 +106,7 @@ class InlineStyleProcessor:
|
||||
elif has_text_indent:
|
||||
processed_style = processed_style.replace(has_text_indent.group(1), "text-indent: " +
|
||||
str(abs(int("0" + "".join(
|
||||
filter(str.isdigit, str(has_text_indent.group(2)))))))
|
||||
filter(str.isdigit, str(has_text_indent.group(3)))))))
|
||||
+ "px; ")
|
||||
return processed_style
|
||||
return processed_style
|
||||
@@ -127,22 +127,25 @@ class InlineStyleProcessor:
|
||||
processed inline style
|
||||
|
||||
"""
|
||||
inline_style = self.tag_inline_style.attrs.get("style") + ";"
|
||||
# 1. Remove white color if tag doesn"t have background color in style
|
||||
inline_style = self.remove_white_if_no_bgcolor(
|
||||
inline_style, self.tag_inline_style)
|
||||
inline_style = inline_style.replace(
|
||||
"list-style-image", "list-style-type")
|
||||
# 2. Create list of styles from inline style
|
||||
# replace all spaces between "; & letter" to ";"
|
||||
style = re.sub(r"; *", ";", inline_style)
|
||||
# when we split style by ";", last element of the list is "" - None (remove it)
|
||||
split_inline_style: list = list(filter(None, style.split(";")))
|
||||
# 3. Duplicate styles check - if the tag had duplicate styles
|
||||
# split_inline_style = self.duplicate_styles_check(split_inline_style)
|
||||
# 4. Processing indents
|
||||
inline_style: str = self.indents_processing(split_inline_style)
|
||||
return inline_style
|
||||
if self.tag_inline_style.attrs.get("style"):
|
||||
inline_style = self.tag_inline_style.attrs.get("style") + ";"
|
||||
# 1. Remove white color if tag doesn't have background color in style
|
||||
inline_style = self.remove_white_if_no_bgcolor(
|
||||
inline_style, self.tag_inline_style)
|
||||
inline_style = inline_style.replace(
|
||||
"list-style-image", "list-style-type")
|
||||
# 2. Create list of styles from inline style
|
||||
# replace all spaces between "; & letter" to ";"
|
||||
style = re.sub(r"; *", ";", inline_style)
|
||||
# when we split style by ";", last element of the list is "" - None (remove it)
|
||||
split_inline_style: list = list(filter(None, style.split(";")))
|
||||
# 3. Duplicate styles check - if the tag had duplicate styles
|
||||
# split_inline_style = self.duplicate_styles_check(split_inline_style)
|
||||
# 4. Processing indents
|
||||
inline_style: str = self.indents_processing(split_inline_style)
|
||||
return inline_style
|
||||
else:
|
||||
return ""
|
||||
|
||||
@staticmethod
|
||||
def check_style_to_be_tag(style: str) -> List[tuple]:
|
||||
|
||||
Reference in New Issue
Block a user