from language_utils import gen_boolean, gen_color, gen_date, gen_email, gen_javascript, gen_number, gen_style, gen_text, gen_url class HTMLTag: def __init__(self, name, self_closing=False): self.name = name self.self_closing = self_closing self.attributes = [] self.children = [] class HTMLTagAttributeType: TypeText = 0 TypeBoolean = 1 TypeNumber = 2 TypeColor = 3 TypeJavascript = 4 TypeStlye = 5 TypeURL = 6 TypeEmail = 7 TypeDate = 8 Generators = { HTMLTagAttributeType.TypeText: gen_text, HTMLTagAttributeType.TypeBoolean: gen_boolean, HTMLTagAttributeType.TypeNumber: gen_number, HTMLTagAttributeType.TypeColor: gen_color, HTMLTagAttributeType.TypeJavascript: gen_javascript, HTMLTagAttributeType.TypeStlye: gen_style, HTMLTagAttributeType.TypeURL: gen_url, HTMLTagAttributeType.TypeEmail: gen_email, HTMLTagAttributeType.TypeDate: gen_date, } class HTMLAttribute: def __init__(self, name, value_type): self.name = name self.kind = value_type self.value = Generators[value_type]() def __str__(self) -> str: if not self.value: return self.name else: return f'{self.name}="{self.value}"'