OLD | NEW |
| (Empty) |
1 #!/usr/bin/env python | |
2 # | |
3 # Copyright 2007 The Closure Linter Authors. All Rights Reserved. | |
4 # | |
5 # Licensed under the Apache License, Version 2.0 (the "License"); | |
6 # you may not use this file except in compliance with the License. | |
7 # You may obtain a copy of the License at | |
8 # | |
9 # http://www.apache.org/licenses/LICENSE-2.0 | |
10 # | |
11 # Unless required by applicable law or agreed to in writing, software | |
12 # distributed under the License is distributed on an "AS-IS" BASIS, | |
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 # See the License for the specific language governing permissions and | |
15 # limitations under the License. | |
16 | |
17 """Error object commonly used in linters.""" | |
18 | |
19 __author__ = ('robbyw@google.com (Robert Walker)', | |
20 'ajp@google.com (Andy Perelson)') | |
21 | |
22 | |
23 class Error(object): | |
24 """Object representing a style error.""" | |
25 | |
26 def __init__(self, code, message, token=None, position=None, fix_data=None): | |
27 """Initialize the error object. | |
28 | |
29 Args: | |
30 code: The numeric error code. | |
31 message: The error message string. | |
32 token: The tokens.Token where the error occurred. | |
33 position: The position of the error within the token. | |
34 fix_data: Data to be used in autofixing. Codes with fix_data are: | |
35 GOOG_REQUIRES_NOT_ALPHABETIZED - List of string value tokens that are | |
36 class names in goog.requires calls. | |
37 """ | |
38 self.code = code | |
39 self.message = message | |
40 self.token = token | |
41 self.position = position | |
42 if token: | |
43 self.start_index = token.start_index | |
44 else: | |
45 self.start_index = 0 | |
46 self.fix_data = fix_data | |
47 if self.position: | |
48 self.start_index += self.position.start | |
49 | |
50 def Compare(a, b): | |
51 """Compare two error objects, by source code order. | |
52 | |
53 Args: | |
54 a: First error object. | |
55 b: Second error object. | |
56 | |
57 Returns: | |
58 A Negative/0/Positive number when a is before/the same as/after b. | |
59 """ | |
60 line_diff = a.token.line_number - b.token.line_number | |
61 if line_diff: | |
62 return line_diff | |
63 | |
64 return a.start_index - b.start_index | |
65 Compare = staticmethod(Compare) | |
OLD | NEW |