class Line: def __init__(self, byte_offset: int, byte_end: int, line: str): self._byte_offset = byte_offset self._byte_end = byte_end self._line = line def byte_offset(self): return self._byte_offset def byte_end(self): return self._byte_end def line(self): return self._line def length(self): return len(self._line) def includes_byte(self, byte: int) -> bool: return self._byte_offset <= byte <= self._byte_end def intersects(self, start_byte: int, end_byte: int): result = start_byte < self._byte_end and end_byte > self._byte_offset #print("%d,%d in %d,%d" % (start_byte, end_byte, self._byte_offset, self._byte_end)) return result