OLD | NEW |
1 # Copyright (C) 2009 Google Inc. All rights reserved. | 1 # Copyright (C) 2009 Google Inc. All rights reserved. |
2 # | 2 # |
3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
5 # met: | 5 # met: |
6 # | 6 # |
7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
10 # copyright notice, this list of conditions and the following disclaimer | 10 # copyright notice, this list of conditions and the following disclaimer |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 if file_declaration: | 149 if file_declaration: |
150 filename = file_declaration.group('FilePath') | 150 filename = file_declaration.group('FilePath') |
151 current_file = DiffFile(filename) | 151 current_file = DiffFile(filename) |
152 files[filename] = current_file | 152 files[filename] = current_file |
153 state = _DECLARED_FILE_PATH | 153 state = _DECLARED_FILE_PATH |
154 continue | 154 continue |
155 | 155 |
156 lines_changed = lines_changed_pattern.match(line) | 156 lines_changed = lines_changed_pattern.match(line) |
157 if lines_changed: | 157 if lines_changed: |
158 if state != _DECLARED_FILE_PATH and state != _PROCESSING_CHUNK: | 158 if state != _DECLARED_FILE_PATH and state != _PROCESSING_CHUNK: |
159 _log.error('Unexpected line change without file path ' | 159 _log.error('Unexpected line change without file path declara
tion: %r', line) |
160 'declaration: %r' % line) | |
161 old_diff_line = int(lines_changed.group('OldStartLine')) | 160 old_diff_line = int(lines_changed.group('OldStartLine')) |
162 new_diff_line = int(lines_changed.group('NewStartLine')) | 161 new_diff_line = int(lines_changed.group('NewStartLine')) |
163 state = _PROCESSING_CHUNK | 162 state = _PROCESSING_CHUNK |
164 continue | 163 continue |
165 | 164 |
166 if state == _PROCESSING_CHUNK: | 165 if state == _PROCESSING_CHUNK: |
167 if line.startswith('+'): | 166 if line.startswith('+'): |
168 current_file.add_new_line(new_diff_line, line[1:]) | 167 current_file.add_new_line(new_diff_line, line[1:]) |
169 new_diff_line += 1 | 168 new_diff_line += 1 |
170 elif line.startswith('-'): | 169 elif line.startswith('-'): |
171 current_file.add_deleted_line(old_diff_line, line[1:]) | 170 current_file.add_deleted_line(old_diff_line, line[1:]) |
172 old_diff_line += 1 | 171 old_diff_line += 1 |
173 elif line.startswith(' '): | 172 elif line.startswith(' '): |
174 current_file.add_unchanged_line(old_diff_line, new_diff_line
, line[1:]) | 173 current_file.add_unchanged_line(old_diff_line, new_diff_line
, line[1:]) |
175 old_diff_line += 1 | 174 old_diff_line += 1 |
176 new_diff_line += 1 | 175 new_diff_line += 1 |
177 elif line == '\\ No newline at end of file': | 176 elif line == '\\ No newline at end of file': |
178 # Nothing to do. We may still have some added lines. | 177 # Nothing to do. We may still have some added lines. |
179 pass | 178 pass |
180 else: | 179 else: |
181 _log.error('Unexpected diff format when parsing a ' | 180 _log.error('Unexpected diff format when parsing a chunk: %r'
, line) |
182 'chunk: %r' % line) | |
183 return files | 181 return files |
OLD | NEW |