diff --git a/modules/html_generator.py b/modules/html_generator.py index 1f12d77a..e3550ed5 100644 --- a/modules/html_generator.py +++ b/modules/html_generator.py @@ -15,6 +15,29 @@ from modules.utils import get_available_chat_styles # This is to store the paths to the thumbnails of the profile pictures image_cache = {} + +def minify_css(css: str) -> str: + # Step 1: Remove comments + css = re.sub(r'/\*.*?\*/', '', css, flags=re.DOTALL) + + # Step 2: Remove leading and trailing whitespace + css = re.sub(r'^[ \t]*|[ \t]*$', '', css, flags=re.MULTILINE) + + # Step 3: Remove spaces after specific characters ({ : ; ,}) + css = re.sub(r'([:{;,])\s+', r'\1', css) + + # Step 4: Remove spaces before `{` + css = re.sub(r'\s+{', '{', css) + + # Step 5: Remove empty lines + css = re.sub(r'^\s*$', '', css, flags=re.MULTILINE) + + # Step 6: Collapse all lines into one + css = re.sub(r'\n', '', css) + + return css + + with open(Path(__file__).resolve().parent / '../css/html_readable_style.css', 'r') as f: readable_css = f.read() with open(Path(__file__).resolve().parent / '../css/html_instruct_style.css', 'r') as f: @@ -35,6 +58,12 @@ for k in chat_styles: style = match.group(1) chat_styles[k] = chat_styles.get(style, '') + '\n\n' + '\n'.join(lines[1:]) +# Reduce the size of the CSS sources above +readable_css = minify_css(readable_css) +instruct_css = minify_css(instruct_css) +for k in chat_styles: + chat_styles[k] = minify_css(chat_styles[k]) + def fix_newlines(string): string = string.replace('\n', '\n\n')