Add processing of indents in %,em,pt

This commit is contained in:
Kiryl
2022-06-23 13:02:23 +03:00
parent 9422182b03
commit 1eb59a66ac
2 changed files with 14 additions and 28 deletions

View File

@@ -21,7 +21,7 @@ def get_bg_color(x):
return color
def convert_tag_style_values(size_value: str) -> str:
def convert_tag_style_values(size_value: str, is_indent: bool = False) -> str:
"""
Function
- converts values of tags from em/%/pt to px
@@ -33,27 +33,23 @@ def convert_tag_style_values(size_value: str) -> str:
Returns
-------
size_value: str
converted value size
"""
def find_closest_size(style_value):
possible_sizes = list(
takewhile(lambda x: style_value >= x, LiveCartaConfig.sizes_pr))
last_possible_size_index = LiveCartaConfig.sizes_pr.index(
possible_sizes[-1])
return LiveCartaConfig.sizes_px[last_possible_size_index]
font_size_regexp = re.compile(
size_regexp = re.compile(
r"(^-*(\d*\.*\d+)%$)|(^-*(\d*\.*\d+)em$)|(^-*(\d*\.*\d+)pt$)")
has_style_attrs = re.search(font_size_regexp, size_value)
has_style_attrs = re.search(size_regexp, size_value)
if has_style_attrs:
if has_style_attrs.group(1):
size_value = float(size_value.replace("%", ""))*6
multiplier = 5.76 if is_indent else 0.16
size_value = float(size_value.replace("%", "")) * multiplier
return str(size_value)+'px'
elif has_style_attrs.group(3):
size_value = float(size_value.replace("em", ""))
return find_closest_size(size_value)
multiplier = 18 if is_indent else 16
size_value = float(size_value.replace("em", "")) * multiplier
return str(size_value)+'px'
elif has_style_attrs.group(5):
return size_value.replace("pt", "px")
size_value = float(size_value.replace("pt", "")) * 4/3
return str(size_value)+'px'
else:
return ""
return size_value
@@ -73,10 +69,10 @@ def convert_indents_tag_values(size_value: str) -> str:
"""
if len(size_value.split(" ")) == 3:
size_value = convert_tag_style_values(size_value.split(
" ")[-2]) # returns middle value
" ")[-2], True) # returns middle value
else:
size_value = convert_tag_style_values(size_value.split(
" ")[-1]) # returns last value
" ")[-1], True) # returns last value
return size_value
@@ -146,7 +142,7 @@ LIVECARTA_STYLE_ATTRS_MAPPING = {
"list-style-image": lambda x: "disc",
"margin-left": convert_indents_tag_values,
"margin-top": convert_tag_style_values,
"margin": convert_indents_tag_values
"margin": convert_indents_tag_values,
}