1 # Copyright 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.
6 def RegexCheck(re
, line_number
, line
, regex
, msg
):
7 """Searches for |regex| in |line| to check for a particular style
8 violation, returning a message like the one below if the regex matches.
9 The |regex| must have exactly one capturing group so that the relevant
10 part of |line| can be highlighted. If more groups are needed, use
11 "(?:...)" to make a non-capturing group. Sample message:
13 line 6: Use var instead of const.
18 def _highlight(match
):
19 """Takes a start position and a length, and produces a row of '^'s to
20 highlight the corresponding part of a string.
22 return match
.start(1) * ' ' + (match
.end(1) - match
.start(1)) * '^'
24 match
= re
.search(regex
, line
)
26 assert len(match
.groups()) == 1
27 return ' line %d: %s\n%s\n%s' % (line_number
, msg
, line
, _highlight(match
))