forked from LiveCarta/BookConverter
Add processing of indents in %,em,pt
This commit is contained in:
@@ -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,
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user