1# Copyright (c) 2014 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5 6class ParserInterface(object): 7 """The interface for parsers.""" 8 9 def ParseChangelog(self, component_path, range_start, range_end): 10 """Parses changelog from the URL stored in the parser object. 11 12 Args: 13 component_path: A string, path of the component. Path is used because 14 path is unique while component name is not. 15 range_start: The start range of the regression. 16 range_end: The end range of the regression. 17 18 Returns: 19 A tuple containing revision_map and file_to_revision_map, 20 revision_map maps a CL number to a dictionary containing revision 21 information such as author, commit message and the revision url. 22 file_to_revision_map maps a name of a file to a tuple containing the CL 23 number and path of the file that CL changes. 24 """ 25 raise NotImplementedError() 26 27 def ParseLineDiff(self, path, component, file_action, githash): 28 """Parses the line diff of the given hash. 29 30 Args: 31 path: The path of the file. 32 component: The component the file is from. 33 file_action: Whether file is modified, deleted or added. 34 githash: The git hashcode to check the line diff. 35 36 Returns: 37 url: The URL of the diff page, returns the changelog page for the 38 file if the diff cannot be retrieved. 39 changed_line_numbers: The list of the line numbers that has been 40 changed. 41 changed_line_contents: The content of the changed lines. 42 """ 43 raise NotImplementedError() 44 45 def ParseBlameInfo(self, component, file_path, line, revision): 46 """Parses blame information of the given file/line in revision. 47 48 Args: 49 component: The component this line is from. 50 file_path: The path of the file. 51 line: The line that caused the crash. 52 revision: The revision to parse blame information for. 53 54 Returns: 55 The content of the line, the last changed revision of the line, author 56 and the url of the revision. 57 """ 58 raise NotImplementedError() 59