feat: реализована вспомогательная функция получения строк исходного кода
This commit is contained in:
@ -19,11 +19,20 @@ def _get_source_lines(
|
||||
Собирает выборку из строк исходного кода так, чтобы она
|
||||
подходила по количесту строчек
|
||||
"""
|
||||
start = max(srcline - max_height//2, 1) + 1
|
||||
# номер строки, с которого начнется отрисовка (НЕ ИНДЕКС)
|
||||
start = max(srcline - max_height//2, 1)
|
||||
# сколько строк, находится над "серединной"
|
||||
upper_length = srcline - start
|
||||
end =
|
||||
|
||||
|
||||
# номер строки, на которой закругляемся
|
||||
end = min(
|
||||
srcline + (max_height - upper_length - 1),
|
||||
len(lines)
|
||||
)
|
||||
return SourceLines(
|
||||
active=srcline,
|
||||
begining_number=start,
|
||||
lines=lines[start-1:end].copy()
|
||||
)
|
||||
|
||||
def main(debugger: Debugger, srcfile: str):
|
||||
layout = Layout()
|
||||
@ -33,3 +42,11 @@ def main(debugger: Debugger, srcfile: str):
|
||||
)
|
||||
rprint(layout)
|
||||
|
||||
if __name__ == "__main__":
|
||||
with open("test.dasm", 'r') as f:
|
||||
lines = f.read().split('\n')
|
||||
srclines = _get_source_lines(8, lines, 7)
|
||||
print(f"focus: {srclines.active}; start: {srclines.begining_number}")
|
||||
print("_"*20)
|
||||
print(*srclines.lines, sep="\n")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user