Source code for tablate.classes.options.html.style.utilities.css_factory

from typing import List

from tablate.classes.options.html.style.utilities.base_values import styles_key


[docs] def css_factory(style_dict: dict) -> str: # def recurse_style_dict_original(style_object: dict, classname_list=None, return_list=None, i=0) -> List[str]: # if return_list is None: # return_list = [] # if classname_list is None: # classname_list = [] # i += 1 # if type(style_object) == dict: # for key, value in style_object.items(): # if key == styles_key: # else: # if len(classname_list) >= i: # classname_list[i - 1] = key # else: # classname_list.append(key) # recurse_style_dict(value, classname_list, return_list, i) # if type(style_object) == list: # return_list.append("." + ".".join(classname_list) + "{" + ";".join(style_object) + ";" + "}") # return return_list # Could use depth to clear out previous elements => works but ugly... def recurse_style_dict(style_object: dict, classname_list=None, return_list=None, i=0) -> List[str]: if return_list is None: return_list = [] if classname_list is None: classname_list = [] i += 1 if type(style_object) == dict: for key, value in style_object.items(): if key != styles_key: if len(classname_list) >= i: classname_list[i - 1] = key else: classname_list = classname_list[0:i] classname_list.append(key) recurse_style_dict(value, classname_list, return_list, i) if type(style_object) == list: normal_styles = [] pseudo_styles = {} for style_item in style_object: if style_item["pseudo"] is not None: if style_item["pseudo"] in pseudo_styles: pseudo_styles[style_item["pseudo"]].append(style_item["style"]) else: pseudo_styles[style_item["pseudo"]] = [style_item["style"]] else: normal_styles.append(style_item["style"]) if len(normal_styles) > 0: return_list.append("." + ".".join(classname_list) + "{" + ";".join(normal_styles) + ";" + "}") for pseudo_style_key, pseudo_style_value in pseudo_styles.items(): return_list.append("." + ".".join(classname_list) + pseudo_style_key + "{" + ";".join(pseudo_style_value) + ";" + "}") return return_list return "".join(recurse_style_dict(style_dict))
# todo: FIX THIS STEAMING MESS!!! try to implement proper recursion... # todo: update:: fixed a bug where previous branches of style object tree were being left intact... # ugly slice copy solution => this needs revisiting with a timer to figure out the best solution # t