diff --git a/src/epub_converter/css_reader.py b/src/epub_converter/css_reader.py index 44776ea..37fdc4b 100644 --- a/src/epub_converter/css_reader.py +++ b/src/epub_converter/css_reader.py @@ -66,17 +66,17 @@ def convert_indents(value): if has_style_attrs: if has_style_attrs.group(1): value = value.replace(has_style_attrs.group(1), - str(abs(int("".join(filter(str.isdigit, str(has_style_attrs.group(1))))) * 6)) + + str(abs(int("0" + "".join(filter(str.isdigit, str(has_style_attrs.group(1))))) * 6)) + 'px') elif has_style_attrs.group(2): value = value.replace(has_style_attrs.group(2), - str(abs(int("".join(filter(str.isdigit, str(has_style_attrs.group(3))))) * 30)) + + str(abs(int("0" + "".join(filter(str.isdigit, str(has_style_attrs.group(3))))) * 30)) + 'px') elif has_style_attrs.group(4): value = value.replace(has_style_attrs.group(4), - str(abs(int("".join(filter(str.isdigit, str(has_style_attrs.group(4))))))) + 'px') + str(abs(int("0" + "".join(filter(str.isdigit, str(has_style_attrs.group(4))))))) + 'px') return value @@ -114,7 +114,8 @@ LIVECARTA_STYLE_ATTRS = { 'border-bottom': [], 'list-style-type': [], 'list-style-image': [], - 'margin-left': [] + 'margin-left': [], + 'margin-top': [] } @@ -155,7 +156,8 @@ LIVECARTA_STYLE_ATTRS_MAPPING = { 'border-bottom': lambda x: x if x != '0' else '', 'list-style-type': lambda x: x if x in list_types else 'disc', 'list-style-image': lambda x: 'disc', - 'margin-left': convert_indents + 'margin-left': convert_indents, + 'margin-top': convert_indents } """ @@ -274,19 +276,19 @@ class TagStyleConverter: clean_style += item[0] + ': ' + item[1] + '; ' margin_left_regexp = re.compile( - r'(margin-left:( *-*\w+);*)') + r'(margin-left: *(-*\w+);*)') text_indent_regexp = re.compile( - r'(text-indent:( *-*\w+);*)') + r'(text-indent: *(-*\w+);*)') has_margin_left = re.search(margin_left_regexp, clean_style) has_text_indent = re.search(text_indent_regexp, clean_style) # formula_of_indent: indent = abs(margin_left - text_indent) if has_margin_left: - num_ml = abs(int("".join( + num_ml = abs(int("0" + "".join( filter(str.isdigit, str(has_margin_left.group(2)))))) if has_text_indent: - num_ti = abs(int("".join( + num_ti = abs(int("0" + "".join( filter(str.isdigit, str(has_text_indent.group(2)))))) clean_style = clean_style.replace(has_text_indent.group(1), 'text-indent: ' + str(abs(num_ml - num_ti)) + 'px; ') @@ -299,7 +301,7 @@ class TagStyleConverter: elif has_text_indent: clean_style = clean_style.replace(has_text_indent.group(1), 'text-indent: ' + - str(abs(int("".join( + str(abs(int("0" + "".join( filter(str.isdigit, str(has_text_indent.group(2))))))) + 'px; ') return clean_style return clean_style @@ -309,8 +311,11 @@ class TagStyleConverter: """ Function to remove extra spaces in style to process clean_style """ # replace all spaces between '; & letter' to ';' style = re.sub(r"; *", ";", style) - split_style = style.split(';') - + split_style: List = style.split(';') + # result = {} + # for list_item in split_style: + # key, val = list_item.split(":") + # result[key] = val # when we split style by ; and we have at the end ; that's why we have '' in list while '' in split_style: split_style.remove('')