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