summaryrefslogtreecommitdiff
path: root/scanner.py
diff options
context:
space:
mode:
authorAnthon van der Neut <anthon@mnt.org>2018-08-20 23:58:10 +0200
committerAnthon van der Neut <anthon@mnt.org>2018-08-20 23:58:10 +0200
commitf39bf3cbbc7815cd041ce9c04723209f2aff729e (patch)
treeac50146f5ba84a911e3feae0e0966bb2018d6a9f /scanner.py
parent995ff1de4463e9a3d3ab8825049e139320ab4c38 (diff)
downloadruamel.yaml-f39bf3cbbc7815cd041ce9c04723209f2aff729e.tar.gz
some minor speed ups through removal of indirection overhead, re #159
Diffstat (limited to 'scanner.py')
-rw-r--r--scanner.py22
1 files changed, 15 insertions, 7 deletions
diff --git a/scanner.py b/scanner.py
index 320dfe7..3dc11e9 100644
--- a/scanner.py
+++ b/scanner.py
@@ -41,8 +41,8 @@ if False: # MYPY
__all__ = ['Scanner', 'RoundTripScanner', 'ScannerError']
-_THE_END = '\0\r\n\x85\u2028\u2029'
-_THE_END_SPACE_TAB = '\0 \t\r\n\x85\u2028\u2029'
+_THE_END = '\n\0\r\x85\u2028\u2029'
+_THE_END_SPACE_TAB = ' \n\0\t\r\x85\u2028\u2029'
_SPACE_TAB = ' \t'
@@ -144,9 +144,17 @@ class Scanner(object):
@property
def reader(self):
# type: () -> Any
- if hasattr(self.loader, 'typ'):
- self.loader.reader
- return self.loader._reader
+ try:
+ return self._scanner_reader
+ except:
+ if hasattr(self.loader, 'typ'):
+ self._scanner_reader = self.loader.reader
+ else:
+ self._scanner_reader = self.loader._reader
+ return self._scanner_reader
+ #if hasattr(self.loader, 'typ'):
+ # self.loader.reader
+ #return self.loader._reader
@property
def scanner_processing_version(self): # prefix until un-composited
@@ -1378,7 +1386,7 @@ class Scanner(object):
chunks = [] # type: List[Any]
while True:
length = 0
- while self.reader.peek(length) not in '\'"\\\0 \t\r\n\x85\u2028\u2029':
+ while self.reader.peek(length) not in ' \n\'"\\\0\t\r\x85\u2028\u2029':
length += 1
if length != 0:
chunks.append(self.reader.prefix(length))
@@ -1411,7 +1419,7 @@ class Scanner(object):
code = int(self.reader.prefix(length), 16)
chunks.append(unichr(code))
self.reader.forward(length)
- elif ch in '\r\n\x85\u2028\u2029':
+ elif ch in '\n\r\x85\u2028\u2029':
self.scan_line_break()
chunks.extend(self.scan_flow_scalar_breaks(double, start_mark))
else: