@@ -95,6 +95,10 @@ def is_block_valid(self, block):
95
95
def convert_sections (self , block ):
96
96
return [self .format_module (block )]
97
97
98
+ def needs_new_header (self , file_contents ):
99
+ return (re .search (r'^\/\/\/ \\file$' , file_contents , flags = re .MULTILINE )
100
+ is None )
101
+
98
102
99
103
class FunctionFormatter (GenericFormatter ):
100
104
def __init__ (self , doc_width ):
@@ -188,6 +192,7 @@ def convert_sections(self, block):
188
192
189
193
def replace_block (
190
194
block_contents ,
195
+ file_contents ,
191
196
file ,
192
197
header_formatter ,
193
198
class_formatter ,
@@ -199,9 +204,10 @@ def replace_block(
199
204
{f .name : f .contents for f in parse_fields (block_contents .group (1 ))})
200
205
201
206
if header_formatter .is_block_valid (block ):
202
- return '%s%s\n ' % (
203
- block_contents .group (0 ),
204
- header_formatter .convert (header_from_block (block )))
207
+ converted = header_formatter .convert (header_from_block (block ))
208
+ if header_formatter .needs_new_header (file_contents ) and converted :
209
+ return block_contents .group (0 ) + converted + '\n '
210
+ return block_contents .group (0 )
205
211
206
212
if class_formatter .is_block_valid (block ):
207
213
return class_formatter .convert (class_from_block (block ))
@@ -231,6 +237,7 @@ def convert_file(file, inplace):
231
237
new_contents = block_re .sub (
232
238
lambda match : replace_block (
233
239
match ,
240
+ contents ,
234
241
file ,
235
242
header_formatter ,
236
243
class_formatter ,
0 commit comments