|
10 | 10 | Class = collections.namedtuple('Class', ['name', 'purpose'])
|
11 | 11 |
|
12 | 12 |
|
| 13 | +FILE_HEADER = """ |
| 14 | +// Copyright 2001-2017, |
| 15 | +// Daniel Kroening (Computer Science Department, University of Oxford |
| 16 | +// and Diffblue Ltd), |
| 17 | +// Edmund Clarke (Computer Science Department, Carnegie Mellon University), |
| 18 | +// DiffBlue Ltd. |
| 19 | +""".strip() |
| 20 | + |
| 21 | + |
13 | 22 | def warn(message):
|
14 | 23 | """ Print a labelled message to stderr. """
|
15 | 24 | sys.stderr.write('Warning: %s\n' % message)
|
@@ -85,7 +94,9 @@ def format_module(self, header):
|
85 | 94 | return None
|
86 | 95 |
|
87 | 96 | subbed = self.whitespace_re.sub(' ', header.module)
|
88 |
| - return self.indented_wrapper.fill(r'\file %s' % subbed) |
| 97 | + # The file directive must be followed by a newline in order to refer to |
| 98 | + # the current file |
| 99 | + return self.indented_wrapper.fill('\\file\n%s' % subbed) |
89 | 100 |
|
90 | 101 | def is_block_valid(self, block):
|
91 | 102 | return has_field(block, 'Module')
|
@@ -219,13 +230,18 @@ def convert_file(file):
|
219 | 230 |
|
220 | 231 | block_re = re.compile(
|
221 | 232 | r'^/\*+\\$(.*?)^\\\*+/$\s*', re.MULTILINE | re.DOTALL)
|
222 |
| - sys.stdout.write(block_re.sub( |
| 233 | + new_contents = block_re.sub( |
223 | 234 | lambda match: replace_block(
|
224 | 235 | match.group(1),
|
225 | 236 | file,
|
226 | 237 | header_formatter,
|
227 | 238 | class_formatter,
|
228 |
| - function_formatter), contents)) |
| 239 | + function_formatter), contents) |
| 240 | + |
| 241 | + if not re.search(FILE_HEADER, new_contents): |
| 242 | + new_contents = FILE_HEADER + '\n\n' + new_contents |
| 243 | + |
| 244 | + sys.stdout.write(new_contents) |
229 | 245 |
|
230 | 246 |
|
231 | 247 | def main():
|
|
0 commit comments