OLD | NEW |
1 # Copyright (C) 2011 Apple Inc. All rights reserved. | 1 # Copyright (C) 2011 Apple 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 | 4 # modification, are permitted provided that the following conditions |
5 # are met: | 5 # are met: |
6 # 1. Redistributions of source code must retain the above copyright | 6 # 1. Redistributions of source code must retain the above copyright |
7 # notice, this list of conditions and the following disclaimer. | 7 # notice, this list of conditions and the following disclaimer. |
8 # 2. Redistributions in binary form must reproduce the above copyright | 8 # 2. Redistributions in binary form must reproduce the above copyright |
9 # notice, this list of conditions and the following disclaimer in the | 9 # notice, this list of conditions and the following disclaimer in the |
10 # documentation and/or other materials provided with the distribution. | 10 # documentation and/or other materials provided with the distribution. |
(...skipping 13 matching lines...) Expand all Loading... |
24 | 24 |
25 import json | 25 import json |
26 import re | 26 import re |
27 | 27 |
28 | 28 |
29 class JSONChecker(object): | 29 class JSONChecker(object): |
30 """Processes JSON lines for checking style.""" | 30 """Processes JSON lines for checking style.""" |
31 | 31 |
32 categories = set(('json/syntax',)) | 32 categories = set(('json/syntax',)) |
33 | 33 |
34 def __init__(self, file_path, handle_style_error): | 34 def __init__(self, _, handle_style_error): |
35 self._handle_style_error = handle_style_error | 35 self._handle_style_error = handle_style_error |
36 self._handle_style_error.turn_off_line_filtering() | 36 self._handle_style_error.turn_off_line_filtering() |
37 | 37 |
38 def check(self, lines): | 38 def check(self, lines): |
39 try: | 39 try: |
40 json.loads('\n'.join(lines) + '\n') | 40 json.loads('\n'.join(lines) + '\n') |
41 except ValueError as e: | 41 except ValueError as error: |
42 self._handle_style_error(self.line_number_from_json_exception(e), 'j
son/syntax', 5, str(e)) | 42 self._handle_style_error(self.line_number_from_json_exception(error)
, 'json/syntax', 5, str(error)) |
43 | 43 |
44 @staticmethod | 44 @staticmethod |
45 def line_number_from_json_exception(error): | 45 def line_number_from_json_exception(error): |
46 match = re.search(r': line (?P<line>\d+) column \d+', str(error)) | 46 match = re.search(r': line (?P<line>\d+) column \d+', str(error)) |
47 if not match: | 47 if not match: |
48 return 0 | 48 return 0 |
49 return int(match.group('line')) | 49 return int(match.group('line')) |
OLD | NEW |