summaryrefslogtreecommitdiff
path: root/reader.py
diff options
context:
space:
mode:
authorAnthon van der Neut <anthon@mnt.org>2018-09-01 09:27:55 +0200
committerAnthon van der Neut <anthon@mnt.org>2018-09-01 09:27:55 +0200
commit849c06e2272a9535bfabb068711a75484b622f1e (patch)
tree9f5e6786bf141a1150a5c418c0b44057ff27ca95 /reader.py
parent2c9712da0b9cb52cadcb084c235584ae6efb413a (diff)
downloadruamel.yaml-849c06e2272a9535bfabb068711a75484b622f1e.tar.gz
caching indirected method call for minor speed improvements on reading, re #159
Diffstat (limited to 'reader.py')
-rw-r--r--reader.py19
1 files changed, 18 insertions, 1 deletions
diff --git a/reader.py b/reader.py
index dc9a036..c377024 100644
--- a/reader.py
+++ b/reader.py
@@ -143,7 +143,7 @@ class Reader(object):
self.update(length)
return self.buffer[self.pointer : self.pointer + length]
- def forward(self, length=1):
+ def forward_1_1(self, length=1):
# type: (int) -> None
if self.pointer + length + 1 >= len(self.buffer):
self.update(length + 1)
@@ -160,6 +160,23 @@ class Reader(object):
self.column += 1
length -= 1
+ def forward(self, length=1):
+ # type: (int) -> None
+ if self.pointer + length + 1 >= len(self.buffer):
+ self.update(length + 1)
+ while length != 0:
+ ch = self.buffer[self.pointer]
+ self.pointer += 1
+ self.index += 1
+ if ch == u'\n' or (
+ ch == u'\r' and self.buffer[self.pointer] != u'\n'
+ ):
+ self.line += 1
+ self.column = 0
+ elif ch != u'\uFEFF':
+ self.column += 1
+ length -= 1
+
def get_mark(self):
# type: () -> Any
if self.stream is None: