diff options
author | Anthon van der Neut <anthon@mnt.org> | 2018-09-01 09:27:55 +0200 |
---|---|---|
committer | Anthon van der Neut <anthon@mnt.org> | 2018-09-01 09:27:55 +0200 |
commit | 849c06e2272a9535bfabb068711a75484b622f1e (patch) | |
tree | 9f5e6786bf141a1150a5c418c0b44057ff27ca95 /reader.py | |
parent | 2c9712da0b9cb52cadcb084c235584ae6efb413a (diff) | |
download | ruamel.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.py | 19 |
1 files changed, 18 insertions, 1 deletions
@@ -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: |