Chromium Code Reviews| Index: chrome/browser/resources/web_dev_style/css_checker.py |
| diff --git a/chrome/browser/resources/web_dev_style/css_checker.py b/chrome/browser/resources/web_dev_style/css_checker.py |
| index db7222b3d4e9616a1ac55fb46772643a736bd99b..d29d5f7a78bdc443ce30eebf32b7f8593de3930c 100644 |
| --- a/chrome/browser/resources/web_dev_style/css_checker.py |
| +++ b/chrome/browser/resources/web_dev_style/css_checker.py |
| @@ -28,12 +28,19 @@ class CSSChecker(object): |
| def _is_gray(s): |
| return s[0] == s[1] == s[2] if len(s) == 3 else s[0:2] == s[2:4] == s[4:6] |
| + def _remove_all(s): |
| + return _remove_grit(_remove_ats(_remove_comments(s))) |
| + |
| def _remove_ats(s): |
| return re.sub(re.compile(r'@\w+.*?{(.*{.*?})+.*?}', re.DOTALL), '\\1', s) |
| def _remove_comments(s): |
| return re.sub(re.compile(r'/\*.*?\*/', re.DOTALL), '', s) |
| + def _remove_grit(s): |
| + grit_reg = r'<if[^>]*>.*<\s*/\s*if[^>]*>|<include[^>]+>' |
| + return re.sub(re.compile(grit_reg, re.DOTALL), '', s) |
| + |
| def _rgb_from_hex(s): |
| if len(s) == 3: |
| r, g, b = s[0] + s[0], s[1] + s[1], s[2] + s[2] |
| @@ -44,8 +51,8 @@ class CSSChecker(object): |
| def alphabetize_props(contents): |
| errors = [] |
| for rule in re.finditer(r'{(.*?)}', contents, re.DOTALL): |
| - rules = filter(lambda r: r.find(': ') >= 0, |
| - map(lambda t: t.strip(), rule.group(1).split(';'))[0:-1]) |
| + semis = map(lambda t: t.strip(), rule.group(1).split(';'))[0:-1] |
|
Dirk Pranke
2012/03/22 03:05:30
isn't list[0:-1] == list ? can you just remove the
Dan Beam
2012/03/22 03:19:31
removed 0, so [:-1] like we talked about in IRC
|
| + rules = filter(lambda r: r.find(': ') >= 0, semis) |
|
Dirk Pranke
2012/03/22 03:05:30
Nit: this can be filter(lamba r: ': ' in r, semis)
Dan Beam
2012/03/22 03:19:31
Done.
|
| props = map(lambda r: r[0:r.find(':')], rules) |
| if props != sorted(props): |
| errors.append(' %s;\n' % (';\n '.join(rules))) |
| @@ -170,8 +177,9 @@ class CSSChecker(object): |
| file_filter=self.file_filter) |
| files = [] |
| for f in affected_files: |
| - # Remove all /*comments*/ and @at-keywords; we're not using a real parser. |
| - file_contents = _remove_ats(_remove_comments('\n'.join(f.NewContents()))) |
| + # Remove all /*comments*/, @at-keywords, and grit <if|include> tags; we're |
| + # not using a real parser. TODO(dbeam): Check alpha in <if> blocks. |
| + file_contents = _remove_all('\n'.join(f.NewContents())) |
| files.append((f.LocalPath(), file_contents)) |
| # Only look at CSS files for now. |