This repository has been archived on 2026-04-06. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
BookConverter/src/livecarta_config.py
2023-03-16 16:59:16 +03:00

89 lines
3.3 KiB
Python

import re
class LiveCartaConfig:
"""Class of values that LiveCarta platform supports"""
NUM_SUPPORTED_LEVELS = 5
SUPPORTED_HEADER_TAGS = {"h1", "h2", "h3", "h4", "h5"}
# Regular expression to match HTML tags that can have a style attribute
REGEX_TAGS_WITH_STYLE_ATTR = re.compile(
"(^div$)|(^p$)|(^span$)|(^code$)|(^kbd$)|(^var$)|(^li$)|(^ul$)|(^ol$)|(^td$)|(^th$)|(^h[1-9]$)"
)
# Dictionary mapping CSS style attribute-value pairs to HTML tags
STYLE_ATTRS_TO_TAGS = {
("font-weight", "bold"): "strong",
("font-weight", "600"): "strong",
("font-weight", "700"): "strong",
("font-weight", "800"): "strong",
("font-weight", "900"): "strong",
("font-style", "italic"): "i",
("text-decoration", "underline"): "u",
("text-decoration", "line-through"): "s",
("text-decoration-line", "underline"): "u",
("text-decoration-line", "line-through"): "s",
("vertical-align", "super"): "sup"
}
# Dictionary mapping HTML tags to CSS style attributes that can be contained within them
TAGS_TO_STYLE_ATTRS_CAN_BE_IN_TAG = {
"^p$": ["text-align", "text-indent", "border-bottom", "border-top", "border-left", "border-right",
"background-color", "background"],
r"(^h[1-9]$)": ["list-style-type", "border-bottom", "border-top", "border-left", "border-right",
"background-color", "background"],
"^li$": ["text-align", "list-style-type"],
"^ul$": ["list-style-type"],
"^ol$": ["list-style-type"]
}
# Dictionary mapping CSS style attribute names to names that should replace them
STYLE_ATTR_TO_REPLACEMENT = {
"list-style": "list-style-type",
}
# Dictionary mapping CSS style attribute names to lists of allowed values
# If an empty list is provided, any value is allowed for the attribute
# If a non-empty list is provided, only values in the list are allowed for the attribute
STYLE_ATTR_TO_VALUE_LIMIT = {
"align": [],
"font": [],
"font-family": [],
"font-size": [],
"font-variant": ["small-caps"],
"font-weight": ["bold", "600", "700", "800", "900"], # <strong>
"font-style": ["italic"], # <i>
"text-decoration": ["underline", "line-through"], # <u> , <s>
"text-decoration-line": ["underline", "line-through"], # <u> , <s>
"text-transform": [],
"text-align": ["justify", "right", "center"],
"text-indent": [],
"margin": [],
"margin-top": [],
"margin-right": [],
"margin-left": [],
"margin-bottom": [],
"padding": [],
"padding-top": [],
"padding-right": [],
"padding-left": [],
"padding-bottom": [],
"vertical-align": ["super"], # <sup>
"color": [],
"background-color": [],
"background": [],
"width": [],
"border": [],
"border-top-width": [],
"border-right-width": [],
"border-left-width": [],
"border-bottom-width": [],
"border-top": [],
"border-right": [],
"border-left": [],
"border-bottom": [],
"list-style-type": ["circle", "disc", "square", "decimal"],
"list-style-image": [],
}