@@ -9,9 +9,19 @@ class LuaClass:
9
9
name : str
10
10
fields : list [str ]
11
11
12
+ def is_it (self , name : str ) -> bool :
13
+ return name in self .name
14
+
15
+ def is_optional (self , field : str ) -> bool :
16
+ optional_fields : list [str ] = ["extends" , "scope_highlight" , "quote_icon" ]
17
+ for optional_field in optional_fields :
18
+ if optional_field in field :
19
+ return True
20
+ return False
21
+
12
22
def validate (self ) -> None :
13
23
for field in self .fields :
14
- if "User" in self . name :
24
+ if self . is_it ( "User" ) :
15
25
self .validate_user_field (field )
16
26
else :
17
27
self .validate_non_user_field (field )
@@ -22,23 +32,20 @@ def validate_user_field(self, field: str) -> None:
22
32
23
33
def validate_non_user_field (self , field : str ) -> None :
24
34
# Non user classes are expected to have mandatory fields with some exceptions
25
- optional : bool = False
26
- optional_fields : list [str ] = ["extends" ] if "Handler" in self .name else []
27
- for optional_field in optional_fields :
28
- if optional_field in field :
29
- optional = True
30
- if not optional :
35
+ if not self .is_optional (field ):
31
36
assert "?" not in field , f"Field must be mandatory: { field } "
32
37
33
38
def to_public_lines (self ) -> list [str ]:
34
- if "User" not in self .name :
39
+ if not self .is_it ( "User" ) :
35
40
return []
36
- lines : list [str ] = [self .name .replace ("User" , "" )]
41
+
42
+ lines : list [str ] = []
43
+ lines .append (self .name .replace ("User" , "" ))
37
44
for field in self .fields :
38
- if "scope_highlight" in field or "quote_icon" in field :
39
- lines .append (field )
40
- elif "ConfigOverrides" in self .name :
45
+ if self .is_it ("ConfigOverrides" ):
41
46
lines .append (field .replace ("?" , "" ))
47
+ elif self .is_optional (field ):
48
+ lines .append (field )
42
49
else :
43
50
lines .append (field .replace ("User" , "" ).replace ("?" , "" ))
44
51
lines .append ("" )
@@ -98,14 +105,12 @@ def update_readme(init_file: Path, readme_file: Path) -> None:
98
105
def update_custom_handlers (init_file : Path , handler_file : Path ) -> None :
99
106
class_name : str = "render.md.Handler"
100
107
old = get_code_block (handler_file , class_name , 1 )
101
- new = "\n " .join (
102
- [
103
- get_class (init_file , "render.md.Mark" ).to_str (),
104
- "" ,
105
- get_class (init_file , class_name ).to_str (),
106
- ]
107
- )
108
- text = handler_file .read_text ().replace (old , new )
108
+ new = [
109
+ get_class (init_file , "render.md.Mark" ).to_str (),
110
+ "" ,
111
+ get_class (init_file , class_name ).to_str (),
112
+ ]
113
+ text = handler_file .read_text ().replace (old , "\n " .join (new ))
109
114
handler_file .write_text (text )
110
115
111
116
0 commit comments