@@ -501,9 +501,16 @@ __version__ = "17"
501
501
class Pyrediff:
502
502
_add_del_re = re.compile(r"^(\d+a\d+(,\d+)?|\d+(,\d+)?d\d+)$")
503
503
_change_re = re.compile(r"^\d+(,\d+)?c\d+(,\d+)?$")
504
- _ws_eol_re = re.compile(r"\\(\s)$")
505
- _escape_re = re.compile(r"(?<!\\)\\([-\s!\"#&%,/:;<=>@_`' \' ' ~])")
506
504
_group_re = re.compile(r"\\g<([^>]+)>")
505
+ if sys.version_info < (3,3):
506
+ _escape_re = re.compile(r"\\([-\s!\"#&%,/:;<=>@_`' \' ' ~])")
507
+ elif sys.version_info < (3,7):
508
+ # 3.3 .. 3.6 doesn' \' ' t escape "_"
509
+ _escape_re = re.compile(r"\\([-\s!\"#&%,/:;<=>@`' \' ' ~])")
510
+ else:
511
+ # 3.7+ doesn' \' ' t escape ' \' ' !' \' ' , ' \' ' "' \' ' , ' \' ' %' \' ' , "' \' ' ", ' \' ' ,' \' ' , ' \' ' /' \' ' , ' \' ' :' \' ' , ' \' ' ;' \' ' ,
512
+ # ' \' ' <' \' ' , ' \' ' =' \' ' , ' \' ' >' \' ' , ' \' ' @' \' ' , and "`"
513
+ _escape_re = re.compile(r"\\([-\s#&%,~])")
507
514
508
515
def __init__(self):
509
516
self.fail = False
@@ -520,7 +527,6 @@ class Pyrediff:
520
527
with io.open(input_name, "r", encoding="utf-8") as output_fp:
521
528
for line in output_fp:
522
529
esc = re.escape(line)
523
- esc = self._ws_eol_re.sub(r"\1", esc)
524
530
esc = self._escape_re.sub(r"\1", esc)
525
531
sys.stdout.write(esc)
526
532
@@ -3111,9 +3117,16 @@ __version__ = "17"
3111
3117
class Pyrediff:
3112
3118
_add_del_re = re.compile(r"^(\d+a\d+(,\d+)?|\d+(,\d+)?d\d+)$")
3113
3119
_change_re = re.compile(r"^\d+(,\d+)?c\d+(,\d+)?$")
3114
- _ws_eol_re = re.compile(r"\\(\s)$")
3115
- _escape_re = re.compile(r"(?<!\\)\\([-\s!\"#&%,/:;<=>@_`'~])")
3116
3120
_group_re = re.compile(r"\\g<([^>]+)>")
3121
+ if sys.version_info < (3,3):
3122
+ _escape_re = re.compile(r"\\([-\s!\"#&%,/:;<=>@_`'~])")
3123
+ elif sys.version_info < (3,7):
3124
+ # 3.3 .. 3.6 doesn't escape "_"
3125
+ _escape_re = re.compile(r"\\([-\s!\"#&%,/:;<=>@`'~])")
3126
+ else:
3127
+ # 3.7+ doesn't escape '!', '"', '%', "'", ',', '/', ':', ';',
3128
+ # '<', '=', '>', '@', and "`"
3129
+ _escape_re = re.compile(r"\\([-\s#&%,~])")
3117
3130
3118
3131
def __init__(self):
3119
3132
self.fail = False
@@ -3130,7 +3143,6 @@ class Pyrediff:
3130
3143
with io.open(input_name, "r", encoding="utf-8") as output_fp:
3131
3144
for line in output_fp:
3132
3145
esc = re.escape(line)
3133
- esc = self._ws_eol_re.sub(r"\1", esc)
3134
3146
esc = self._escape_re.sub(r"\1", esc)
3135
3147
sys.stdout.write(esc)
3136
3148
0 commit comments