#!/usr/bin/env python import json import time import os import tinycss2 BASE_PATH = os.path.dirname(__file__) CLASSES = json.load(open(f"{BASE_PATH}/src/classes.json")) cur_time = int(time.time()) rules = tinycss2.parse_stylesheet( open(f"{BASE_PATH}/src/simple-icons.css").read(), skip_comments=True, ) final_rules = rules[:3] font_rule = rules[0] for block in font_rule.content: if isinstance(block, tinycss2.ast.FunctionBlock): if "static" in block.arguments[0].value: arg = block.arguments[0] arg.value += f"?v={cur_time}" arg.representation = arg.representation.replace( ".min.woff2", f".min.woff2?v={cur_time}" ) block.arguments[0] = arg rules = rules[4:] for i, rule in enumerate(rules): if isinstance(rule, tinycss2.ast.WhitespaceToken): continue if rule.prelude[1].value not in CLASSES: del rules[i] elif rule.prelude[3].value == "si--color": del rules[i] else: char = hex(ord(rule.content[4].value))[2:] rule.content[4].representation = f'"\\{char}"' final_rules.append(rule) out = open(f"{os.environ['ROOT']}/src/static/icons/si.min.css", "w") out.write(tinycss2.serialize(final_rules)) out.close()