diff options
author | John Stark <jhnstrk@gmail.com> | 2023-01-05 20:40:13 +0100 |
---|---|---|
committer | John Stark <jhnstrk@gmail.com> | 2023-01-05 20:40:13 +0100 |
commit | 0db66d2aa3c5abe79e55017435894898a2ebe898 (patch) | |
tree | e33e6d7bb7eb448302b3299545657203caf371f0 /scanner.py | |
parent | 45111ba0b67e8619265d89f3202635e62c13cde6 (diff) | |
download | ruamel.yaml-0db66d2aa3c5abe79e55017435894898a2ebe898.tar.gz |
Fix secondary tag encoding. See #449449_secondary_tag_url_enc
The second exclamation mark was getting url encoded, when it
should be preserved. Added a regression test.
Diffstat (limited to 'scanner.py')
-rw-r--r-- | scanner.py | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -1098,6 +1098,13 @@ class Scanner: srp = self.reader.peek start_mark = self.reader.get_mark() ch = srp(1) + short_handle = '!' + if ch == '!': + short_handle = '!!' + self.reader.forward() + srp = self.reader.peek + ch = srp(1) + if ch == '<': handle = None self.reader.forward(2) @@ -1112,7 +1119,7 @@ class Scanner: self.reader.forward() elif ch in _THE_END_SPACE_TAB: handle = None - suffix = '!' + suffix = short_handle self.reader.forward() else: length = 1 @@ -1123,11 +1130,11 @@ class Scanner: break length += 1 ch = srp(length) - handle = '!' + handle = short_handle if use_handle: handle = self.scan_tag_handle('tag', start_mark) else: - handle = '!' + handle = short_handle self.reader.forward() suffix = self.scan_tag_uri('tag', start_mark) ch = srp() |