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,
}

View File

@@ -76,16 +76,6 @@ class LiveCartaConfig:
INDENT = "30px"
sizes_pr = [-100, -1, 0.5, 0.56, 0.63, 0.69, 0.75, 0.81, 0.88, 0.94, 1.0,
1.06, 1.13, 1.19, 1.25, 1.31, 1.38, 1.44, 1.5, 1.56, 1.63, 1.69,
1.75, 1.81, 1.88, 1.94, 2.0, 2.06, 2.13, 2.19, 2.25, 2.31, 2.38,
2.44, 2.5, 2.56, 2.63, 2.69, 2.75, 2.81, 2.88, 2.94, 3.0, 4.0, 5.0]
sizes_px = ["0px", "10px", "10px", "11px", "12px", "13px", "14px", "15px", "16px", "17px", "18px",
"19px", "20px", "21px", "22px", "23px", "24px", "25px", "26px", "27px", "28px", "29px",
"30px", "31px", "32px", "33px", "34px", "35px", "36px", "37px", "38px", "39px", "40px",
"41px", "42px", "43px", "44px", "45px", "46px", "47px", "48px", "49px", "50px", "64px", "72px"]
list_types = ["circle", "disc", "armenian", "decimal",
"decimal-leading-zero", "georgian", "lower-alpha", "lower-latin",
"lower-roman", "upper-alpha", "upper-latin", "upper-roman", "none"]