Merge pull request #1 from pre-commit/meybs_fixey_fixey
Simplify string-fixer
diff --git a/pre_commit_hooks/string_fixer.py b/pre_commit_hooks/string_fixer.py
index 616c08c..9d2213a 100644
--- a/pre_commit_hooks/string_fixer.py
+++ b/pre_commit_hooks/string_fixer.py
@@ -8,7 +8,7 @@
double_quote_starts = tuple(s for s in tokenize.single_quoted if '"' in s)
-compiled_tokenize_string = re.compile(tokenize.String)
+compiled_tokenize_string = re.compile('(?<!")' + tokenize.String + '(?!")')
def handle_match(m):
@@ -19,34 +19,18 @@
meat = string[len(double_quote_start):-1]
if '"' in meat or "'" in meat:
break
- return (
- double_quote_start.replace('"', "'") +
- string[len(double_quote_start):-1] +
- "'"
- )
+ return double_quote_start.replace('"', "'") + meat + "'"
return string
def fix_strings(filename):
- return_value = 0
-
- lines = []
-
- with open(filename, 'r') as read_handle:
- for line in read_handle:
- if '"""' in line:
- # Docstrings are hard, fuck it
- lines.append(line)
- else:
- result = re.sub(compiled_tokenize_string, handle_match, line)
- lines.append(result)
- return_value |= int(result != line)
-
- with open(filename, 'w') as write_handle:
- for line in lines:
- write_handle.write(line)
-
- return return_value
+ contents = open(filename).read()
+ new_contents = compiled_tokenize_string.sub(handle_match, contents)
+ retval = int(new_contents != contents)
+ if retval:
+ with open(filename, 'w') as write_handle:
+ write_handle.write(new_contents)
+ return retval
def main(argv=None):