]> git.madduck.net Git - etc/vim.git/commitdiff

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Don't omit escaping the second consecutive quote
authorŁukasz Langa <lukasz@langa.pl>
Wed, 11 Apr 2018 23:25:47 +0000 (16:25 -0700)
committerŁukasz Langa <lukasz@langa.pl>
Wed, 11 Apr 2018 23:25:47 +0000 (16:25 -0700)
This would produce invalid code for strings like `"x = ''; y = \"\""`.

black.py
tests/string_quotes.py

index c7cfa2f2ec6c03cb5bb92fb6476dcaf545ac3ea0..9581d63ea18cdbdd4c843a6a9350666c6b3a8e67 100644 (file)
--- a/black.py
+++ b/black.py
@@ -1998,6 +1998,9 @@ def normalize_string_quotes(leaf: Leaf) -> None:
     else:
         new_body = escaped_orig_quote.sub(rf"\1{orig_quote}", body)
         new_body = unescaped_new_quote.sub(rf"\1\\{new_quote}", new_body)
+        # Add escapes again for consecutive occurences of new_quote (sub
+        # doesn't match overlapping substrings).
+        new_body = unescaped_new_quote.sub(rf"\1\\{new_quote}", new_body)
     if new_quote == '"""' and new_body[-1] == '"':
         # edge case:
         new_body = new_body[:-1] + '\\"'
index 1532a7ab74c5ce8b3fb2e9081b1a89f880308aea..8ccd041b1aac5ff9f569d5d5dcdc1177bc7dc9ec 100644 (file)
@@ -30,6 +30,14 @@ jumps over\n\
 the \'lazy\' dog.\n\
 '
 re.compile(r'[\\"]')
+"x = ''; y = \"\""
+"x = '''; y = \"\""
+"x = ''''; y = \"\""
+"x = '' ''; y = \"\""
+"x = ''; y = \"\"\""
+"x = '''; y = \"\"\"\""
+"x = ''''; y = \"\"\"\"\""
+"x = '' ''; y = \"\"\"\"\""
 
 # output
 
@@ -65,3 +73,11 @@ jumps over\n\
 the 'lazy' dog.\n\
 "
 re.compile(r'[\\"]')
+"x = ''; y = \"\""
+"x = '''; y = \"\""
+"x = ''''; y = \"\""
+"x = '' ''; y = \"\""
+'x = \'\'; y = """'
+'x = \'\'\'; y = """"'
+'x = \'\'\'\'; y = """""'
+'x = \'\' \'\'; y = """""'