mirror of
https://github.com/pre-commit/pre-commit-hooks.git
synced 2026-03-31 02:36:52 +00:00
Preserve CRLF if file already ends that way
This commit is contained in:
parent
abd3d0ec3f
commit
2ab5832ce1
2 changed files with 10 additions and 10 deletions
|
|
@ -35,14 +35,14 @@ def fix_file(file_obj):
|
|||
last_character = file_obj.read(1)
|
||||
|
||||
# Our current position is at the end of the file just before any amount of
|
||||
# newlines. If we read two characters and get two newlines back we know
|
||||
# there are extraneous newlines at the ned of the file. Then backtrack and
|
||||
# trim the end off.
|
||||
if len(file_obj.read(2)) == 2:
|
||||
file_obj.seek(-2, os.SEEK_CUR)
|
||||
file_obj.truncate()
|
||||
file_obj.write(b'\n')
|
||||
return 1
|
||||
# newlines. If we find extraneous newlines, then backtrack and trim them.
|
||||
position = file_obj.tell()
|
||||
remaining = file_obj.read()
|
||||
for sequence in [b'\n', b'\r\n']:
|
||||
if remaining.startswith(sequence) and len(remaining) > len(sequence):
|
||||
file_obj.seek(position + len(sequence))
|
||||
file_obj.truncate()
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ TESTS = (
|
|||
(b'foo', 1, b'foo\n'),
|
||||
(b'foo\n\n\n', 1, b'foo\n'),
|
||||
(b'\xe2\x98\x83', 1, b'\xe2\x98\x83\n'),
|
||||
(b'foo\r\n', 1, b'foo\n'),
|
||||
(b'foo\r\n\r\n', 1, b'foo\n'),
|
||||
(b'foo\r\n', 0, b'foo\r\n'),
|
||||
(b'foo\r\n\r\n\r\n', 1, b'foo\r\n'),
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue