-
Notifications
You must be signed in to change notification settings - Fork 1
/
list_generator.py
29 lines (27 loc) · 1.02 KB
/
list_generator.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from typing import List
from math import floor
def generate_list(items: List, list_rows: int, selection: int):
return_list = []
arrows_at_end = False
arrows_at_start = False
lower_copy_index = int(selection - floor(list_rows / 2))
if lower_copy_index < 0 or len(items) <= list_rows:
lower_copy_index = 0
upper_copy_index = lower_copy_index + list_rows
if upper_copy_index > len(items):
upper_copy_index = len(items)
if upper_copy_index - lower_copy_index < list_rows:
lower_copy_index = upper_copy_index - list_rows
if lower_copy_index < 0:
lower_copy_index = 0
if len(items) > list_rows and upper_copy_index < len(items):
arrows_at_end = True
if lower_copy_index > 0:
arrows_at_start = True
for i in range(lower_copy_index, upper_copy_index):
return_list.append(items[i])
if arrows_at_end:
return_list[-1] = "↓"
if arrows_at_start:
return_list[0] = "↑"
return return_list, selection - lower_copy_index