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,
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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"]
|
||||
|
||||
Reference in New Issue
Block a user