@@ -23,26 +23,26 @@ def _generate_impl(self, schema: dict) -> None:
2323 self .ensure_path_exists ()
2424
2525 for encoded_type in schema ['types' ]:
26- document_name = self .make_document_name (encoded_type ['name' ])
26+ type_class_name = self .env .filters ['fmt_class_type' ](encoded_type ['name' ])
27+ type_class_h_file = self .env .filters ['fmt_header_name' ](type_class_name )
2728 if encoded_type ['token' ] == 'type' :
2829 pass
2930 elif encoded_type ['token' ] == 'composite' :
30- print (f'generating composite type (to { document_name } )' )
31- self .generate_document (document_name , 'composite.tmpl' , type = encoded_type , schema = schema )
31+ print (f'Cenerating composite type { type_class_name } (to { type_class_h_file } )' )
32+ self .generate_document (type_class_h_file , 'composite.tmpl' , type = encoded_type , schema = schema )
3233 elif encoded_type ['token' ] == 'enum' :
33- print (f'generating enum type (to { document_name } )' )
34- self .generate_document (document_name , 'enum.tmpl' , type = encoded_type , schema = schema )
34+ print (f'Cenerating enum type { type_class_name } (to { type_class_h_file } )' )
35+ self .generate_document (type_class_h_file , 'enum.tmpl' , type = encoded_type , schema = schema )
3536 elif encoded_type ['token' ] == 'set' :
36- print (f'generating set type (to { document_name } )' )
37- self .generate_document (document_name , 'set.tmpl' , type = encoded_type , schema = schema )
37+ print (f'Cenerating set type { type_class_name } (to { type_class_h_file } )' )
38+ self .generate_document (type_class_h_file , 'set.tmpl' , type = encoded_type , schema = schema )
3839
3940 for message in schema ['messages' ]:
40- document_name = self .make_document_name (message ['name' ])
41- print ( f'generating message (to { document_name } )' )
42- self . generate_document ( document_name , 'message.tmpl' , message = message , schema = schema ,
43- includes = self .generate_includes_for_message ( message , schema ) )
41+ message_class_name = self .env . filters [ 'fmt_class_message' ] (message ['name' ])
42+ message_class_h_file = self . env . filters [ 'fmt_header_name' ]( message_class_name )
43+ print ( f'Generating message { message_class_name } (to { message_class_h_file } )' )
44+ self .generate_document ( message_class_h_file , ' message.tmpl' , message = message , schema = schema )
4445
45- self .generate_document ('schema.h' , 'schema.tmpl' , schema = schema , includes = self .generate_includes (schema ))
4646 self .generate_document ('common.h' , 'common.tmpl' , schema = schema )
4747
4848 def make_document_name (self , name : str ) -> str :
@@ -55,39 +55,6 @@ def generate_document(self, document_name: str, template_name: str, **kwargs) ->
5555 with open (document_path , mode = 'w' , encoding = 'utf8' ) as document :
5656 document .write (document_content )
5757
58- def generate_includes_for_message (self , message : dict , schema : dict = None ) -> list :
59- includes = set ()
60- for field in message ['fields' ]:
61- if field ['token' ] == 'field' :
62- if field ['type' ]['token' ] in ('composite' , 'enum' , 'set' ):
63- includes .add (self .make_document_name (field ['type' ]['name' ]))
64- elif field ['token' ] == 'group' :
65- includes .add (self .make_document_name (field ['dimension_type' ]['name' ]))
66- # this func could be used for iterate over group fields
67- includes = includes .union (self .generate_includes_for_message (field ))
68- elif field ['token' ] == 'data' :
69- includes .add (self .make_document_name (field ['type' ]['name' ]))
70-
71- if schema != None :
72- includes .add (self .make_document_name (schema ['header_type' ]['name' ]))
73-
74- return list (includes )
75-
76- def generate_includes_for_composite (self , composite : dict ) -> list :
77- includes = set ()
78- for field in composite ['contained_types' ]:
79- if field ['token' ] in ('composite' , 'enum' , 'set' ):
80- includes .add (self .make_document_name (field ['name' ]))
81-
82- return list (includes )
83-
84- def generate_includes (self , schema : dict ) -> list :
85- includes = set ()
86- for message in schema ['messages' ]:
87- includes .add (self .make_document_name (message ['name' ]))
88-
89- return list (includes )
90-
9158 def ensure_path_exists (self ) -> None :
9259 if not os .path .exists (self .path ):
9360 os .makedirs (self .path )
@@ -102,7 +69,13 @@ def add_filters(self) -> None:
10269 self .env .filters ['fmt_field_ref' ] = lambda value : value [0 ].upper () + value [1 :] + 'Ref'
10370 self .env .filters ['lower_first' ] = lambda value : value [0 ].lower () + value [1 :]
10471 self .env .filters ['upper_first' ] = lambda value : value [0 ].upper () + value [1 :]
105- self .env .filters ['document_name' ] = lambda value : self .make_document_name (value )
72+
73+ self .env .filters ['fmt_class_type' ] = lambda s : s [0 ].upper () + s [1 :]
74+ self .env .filters ['fmt_class_ref' ] = lambda s : s [0 ].upper () + s [1 :] + 'Ref'
75+ self .env .filters ['fmt_class_message' ] = lambda s : s [0 ].upper () + s [1 :]
76+ self .env .filters ['fmt_class_group' ] = lambda s : s [0 ].upper () + s [1 :] + 'Group'
77+ self .env .filters ['fmt_class_data' ] = lambda s : s [0 ].upper () + s [1 :] + 'Data'
78+ self .env .filters ['fmt_header_name' ] = lambda s : s + '.h'
10679
10780 @staticmethod
10881 def filter_replace_keyword (value : str ) -> str :
0 commit comments