cleanup
This commit is contained in:
@@ -21,7 +21,6 @@ class LogFileModel:
|
|||||||
def __init__(self, file: str, settings: Settings):
|
def __init__(self, file: str, settings: Settings):
|
||||||
self.settings = settings
|
self.settings = settings
|
||||||
self._file = os.path.realpath(file)
|
self._file = os.path.realpath(file)
|
||||||
# self._lock = threading.RLock()
|
|
||||||
|
|
||||||
def highlighters(self):
|
def highlighters(self):
|
||||||
return Highlighting.read_config(self.settings)
|
return Highlighting.read_config(self.settings)
|
||||||
@@ -63,7 +62,6 @@ class LogFileModel:
|
|||||||
|
|
||||||
def write_range(self, start_byte: int, end_byte: int, file: str):
|
def write_range(self, start_byte: int, end_byte: int, file: str):
|
||||||
# print("write range: %d - %d -> %s" % (start_byte, end_byte, file))
|
# print("write range: %d - %d -> %s" % (start_byte, end_byte, file))
|
||||||
# with self._lock, open(self._file, 'rb') as source, open(file, "w+b") as target:
|
|
||||||
with open(self._file, 'rb') as source, open(file, "w+b") as target:
|
with open(self._file, 'rb') as source, open(file, "w+b") as target:
|
||||||
offset = start_byte
|
offset = start_byte
|
||||||
source.seek(offset)
|
source.seek(offset)
|
||||||
@@ -108,43 +106,37 @@ class LogFileModel:
|
|||||||
lines_to_find = lines + abs(scroll_lines)
|
lines_to_find = lines + abs(scroll_lines)
|
||||||
lines_to_return = math.ceil(lines)
|
lines_to_return = math.ceil(lines)
|
||||||
|
|
||||||
# with self._lock:
|
# TODO handle lines longer than 4096 bytes
|
||||||
if True:
|
# TODO abort file open after a few secons: https://docs.python.org/3/library/signal.html#example
|
||||||
# TODO handle lines longer than 4096 bytes
|
with open(self._file, 'rb') as f:
|
||||||
# TODO abort file open after a few secons: https://docs.python.org/3/library/signal.html#example
|
offset = min(byte_offset, self.byte_count())
|
||||||
with open(self._file, 'rb') as f:
|
# print("offset: %s byte_count: %d" % (offset, self.byte_count()))
|
||||||
offset = min(byte_offset, self.byte_count())
|
offset = max(0, offset - self.settings.max_line_length())
|
||||||
# print("offset: %s byte_count: %d" % (offset, self.byte_count()))
|
|
||||||
offset = max(0, offset - self.settings.max_line_length())
|
|
||||||
|
|
||||||
eof_reached = True
|
f.seek(offset)
|
||||||
f.seek(offset)
|
while l := f.readline():
|
||||||
while l := f.readline():
|
new_offset = f.tell()
|
||||||
new_offset = f.tell()
|
line = Line(offset, new_offset, l.decode("utf8", errors="ignore"))
|
||||||
line = Line(offset, new_offset,
|
|
||||||
l.decode("utf8", errors="ignore") # .replace("\r", "").replace("\n", "")
|
|
||||||
)
|
|
||||||
# print("%s %s %s" %(line.byte_offset(), line.line(), line.byte_end()))
|
|
||||||
if line.byte_end() <= byte_offset: # line.byte_end() returns the end byte +1
|
|
||||||
lines_before_offset.append(line)
|
|
||||||
else:
|
|
||||||
lines_after_offset.append(line)
|
|
||||||
offset = f.tell()
|
|
||||||
if len(lines_after_offset) >= lines_to_find:
|
|
||||||
eof_reached = False
|
|
||||||
break
|
|
||||||
|
|
||||||
all_lines = lines_before_offset + lines_after_offset
|
if line.byte_end() <= byte_offset: # line.byte_end() returns the end byte +1
|
||||||
start = max(0, len(lines_before_offset) + scroll_lines)
|
lines_before_offset.append(line)
|
||||||
if start + lines_to_return - 1 < len(all_lines):
|
else:
|
||||||
result = all_lines[start:start + lines_to_return]
|
lines_after_offset.append(line)
|
||||||
else:
|
offset = f.tell()
|
||||||
result = all_lines[-lines_to_return + 1:]
|
if len(lines_after_offset) >= lines_to_find:
|
||||||
|
break
|
||||||
|
|
||||||
# print("returning %s lines" % (len(result)))
|
all_lines = lines_before_offset + lines_after_offset
|
||||||
# if len(result) > 0:
|
start = max(0, len(lines_before_offset) + scroll_lines)
|
||||||
# print("returning %s %d -> %d" % (result[0].line(), result[0].byte_offset(), result[0].byte_end()))
|
if start + lines_to_return - 1 < len(all_lines):
|
||||||
return result
|
result = all_lines[start:start + lines_to_return]
|
||||||
|
else:
|
||||||
|
result = all_lines[-lines_to_return + 1:]
|
||||||
|
|
||||||
|
# print("returning %s lines" % (len(result)))
|
||||||
|
# if len(result) > 0:
|
||||||
|
# print("returning %s %d -> %d" % (result[0].line(), result[0].byte_offset(), result[0].byte_end()))
|
||||||
|
return result
|
||||||
|
|
||||||
def byte_count(self) -> int:
|
def byte_count(self) -> int:
|
||||||
size = os.stat(self._file).st_size
|
size = os.stat(self._file).st_size
|
||||||
|
|||||||
Reference in New Issue
Block a user