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:
@ -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)
|
||||
|
Reference in New Issue
Block a user