Spaces:
No application file
No application file
| class RawStyleValue: | |
| def __init__(self, value): | |
| stack[-1].stack[-1].values.append(value) | |
| class StyleValue(RawStyleValue): | |
| def __init__(self, key, value): | |
| super().__init__(f'{key}: {value};') | |
| class StyleRule: | |
| def __init__(self, selector): | |
| self.selector = selector | |
| self.values = [] | |
| def __enter__(self): | |
| stack[-1].stack.append(self) | |
| def __exit__(self, exc_type, exc_val, exc_tb): | |
| stack[-1].rules.append(stack[-1].stack.pop()) | |
| class SimpleStyle: | |
| def __init__(self, priority=0): | |
| self.priority = priority | |
| self.stack = [] | |
| self.rules = [] | |
| def __enter__(self): | |
| stack.append(self) | |
| def __exit__(self, exc_type, exc_val, exc_tb): | |
| rules.append(stack.pop()) | |
| stack: list[SimpleStyle] = [] | |
| rules: list[SimpleStyle] = [] | |
| def create_stylesheet(): | |
| def sort_key(value): | |
| return value.priority | |
| full_sheet = '' | |
| rules.sort(key=sort_key) | |
| for rule in rules: | |
| for stylerule in rule.rules: | |
| full_sheet += f'{stylerule.selector} {{' | |
| for stylevalue in stylerule.values: | |
| full_sheet += stylevalue | |
| full_sheet += '}' | |
| return full_sheet | |