compute between bytes and chars to get correct clipboard copy

This commit is contained in:
2021-10-25 17:52:14 +02:00
parent b8eb62a3bf
commit 7002e91a35
4 changed files with 28 additions and 12 deletions

16
line.py
View File

@@ -4,18 +4,26 @@ class Line:
self._byte_end = byte_end
self._line = line
def byte_offset(self):
def byte_offset(self) -> int:
return self._byte_offset
def byte_end(self):
def byte_end(self) -> int:
return self._byte_end
def line(self):
def line(self) -> str:
return self._line
def length(self):
def length(self) -> int:
return len(self._line)
def char_index_to_byte(self, char_in_line: int) -> int:
return len(self.prefix(char_in_line).encode("utf8"))
def byte_index_to_char_index(self, byte_index: int) -> int:
prefix_bytes = self._line.encode("utf8")[:byte_index]
prefix_chars = prefix_bytes.decode("utf8", errors="ignore")
return len(prefix_chars)
def includes_byte(self, byte: int) -> bool:
return self._byte_offset <= byte <= self._byte_end