Fixed various problems with the reformat script:

* Improved sort checker so we sort includes more.
* Fixed vars in brackets and varsLikeTHIS.
* Added automatic x++ to ++x conversion in for loops.

TEST=Ran on various source files and verified manually.

Review URL: https://webrtc-codereview.appspot.com/1017004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3325 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
phoglund@webrtc.org
2013-01-02 15:46:43 +00:00
parent ec9c942e45
commit 943770b1ab

View File

@ -58,12 +58,13 @@ import sys
def LowerWord(obj):
"""Helper for DeCamelCase."""
return obj.group(1) + '_' + obj.group(2).lower() + obj.group(3)
optional_last_letters = obj.group(3) or ''
return obj.group(1) + '_' + obj.group(2).lower() + optional_last_letters
def DeCamelCase(text):
"""De-camelize variable names."""
pattern = re.compile(r'(?<=[ _*\(\&\!])([a-z]+)(?<!k)([A-Z]+)([a-z])')
pattern = re.compile(r'(?<=[ _*\(\&\!])([a-z]+)(?<!k)([A-Z]+)([a-z])?')
while re.search(pattern, text):
text = re.sub(pattern, LowerWord, text)
return text
@ -80,10 +81,16 @@ def MoveUnderScore(text):
# TODO(mflodman) Replace \1 with ?-expression.
# We don't want to change macros and #defines though, so don't do anything
# if the first character is uppercase (normal variables shouldn't have that).
pattern = r'([ \*\!\&\(])_(?!_)(?![A-Z])(\w+)'
pattern = r'([ \*\!\&\(\[\]])_(?!_)(?![A-Z])(\w+)'
return re.sub(pattern, r'\1\2_', text)
def PostfixToPrefixInForLoops(text):
"""Converts x++ to ++x in the increment part of a for loop."""
pattern = r'(for \(.*;.*;) (\w+)\+\+\)'
return re.sub(pattern, r'\1++\2)', text)
def RemoveMultipleEmptyLines(text):
"""Remove all multiple blank lines."""
pattern = r'[\n]{3,}'
@ -159,9 +166,8 @@ def SortIncludeHeaders(text, filename):
# Replace existing headers with the sorted string.
text_no_hdrs = re.sub(include_pattern, r'???', text)
# Insert sorted headers unless we detect #ifdefs.
if re.search(r'(#ifdef|#ifndef|#if).*\?{3,}.*#endif',
text_no_hdrs, re.DOTALL):
# Insert sorted headers unless we detect #ifdefs right next to the headers.
if re.search(r'(#ifdef|#ifndef|#if).*\s*\?{3,}\s*#endif', text_no_hdrs):
print 'WARNING: Include headers not sorted in ' + filename
return text
@ -252,6 +258,7 @@ def main():
text = DeCamelCase(text)
text = MoveUnderScore(text)
text = PostfixToPrefixInForLoops(text)
text = CPPComments(text)
text = AddHeaderPath(text)
text = AddWebrtcPrefixToOldSrcRelativePaths(text)