create format_score_string function.
This commit is contained in:
+37
-14
@@ -231,20 +231,12 @@ def format_highscore_message(session: Session, group: CategoryGroup) -> str:
|
|||||||
# add each score to list
|
# add each score to list
|
||||||
for ind in range(max_cat_size): # need to subtract to deal with category name string
|
for ind in range(max_cat_size): # need to subtract to deal with category name string
|
||||||
if ind in processed_group.index:
|
if ind in processed_group.index:
|
||||||
user_length = group.UsernameLength
|
username = processed_group["UserName"][ind]
|
||||||
username = processed_group["UserName"][ind][:user_length].ljust(user_length, " ")
|
score = processed_group["Score"][ind]
|
||||||
|
|
||||||
# get score, pad to correct length
|
str_list[ind + 1] += format_score_string(
|
||||||
if category.IsTimeRecord:
|
username, score, group.UsernameLength, group.IsTimeRecord, ind + 1, pad_length
|
||||||
# MM:SS.ms is 7 characters long
|
)
|
||||||
# if there are single digit minutes, add a space for formatting.
|
|
||||||
score = get_time_str(processed_group["Score"][ind])
|
|
||||||
if score.find(":") and len(score.split(":", maxsplit=1)[0]) < 2:
|
|
||||||
score = " " + score
|
|
||||||
else:
|
|
||||||
score = str(int(processed_group["Score"][ind])).rjust(7, " ")
|
|
||||||
|
|
||||||
str_list[ind + 1] += f"{ind + 1}: {username} - {score}".ljust(pad_length, " ")
|
|
||||||
else:
|
else:
|
||||||
# if not enough entries, pad out
|
# if not enough entries, pad out
|
||||||
if ind + 1 <= category.Size:
|
if ind + 1 <= category.Size:
|
||||||
@@ -262,7 +254,6 @@ def format_highscore_message(session: Session, group: CategoryGroup) -> str:
|
|||||||
# need to use index to allow for modifying the list
|
# need to use index to allow for modifying the list
|
||||||
for ind, line in enumerate(str_list):
|
for ind, line in enumerate(str_list):
|
||||||
if len(line) > MAX_LINE_LENGTH:
|
if len(line) > MAX_LINE_LENGTH:
|
||||||
|
|
||||||
split_loc = int(MAX_LINE_LENGTH / pad_length) * pad_length
|
split_loc = int(MAX_LINE_LENGTH / pad_length) * pad_length
|
||||||
new_line = line[split_loc:]
|
new_line = line[split_loc:]
|
||||||
str_list[ind] = line[:split_loc]
|
str_list[ind] = line[:split_loc]
|
||||||
@@ -283,6 +274,38 @@ def format_highscore_message(session: Session, group: CategoryGroup) -> str:
|
|||||||
return ret_string + "```"
|
return ret_string + "```"
|
||||||
|
|
||||||
|
|
||||||
|
def format_score_string(
|
||||||
|
username: str, score: float, username_length: int, is_time_record: bool, rank: int, pad_length: int
|
||||||
|
) -> str:
|
||||||
|
"""
|
||||||
|
Builds the string to show a user's score.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
username (str): username.
|
||||||
|
score (int): score in int form.
|
||||||
|
username_length (float): limit to how long username is allowed to be.
|
||||||
|
is_time_record (bool): if the score represents an number or a time record.
|
||||||
|
rank (int): the user's rank.
|
||||||
|
pad_length (int): limit to how long the string can be.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: string to show user's score.
|
||||||
|
"""
|
||||||
|
username = username[:username_length].ljust(username_length, " ")
|
||||||
|
|
||||||
|
# get score, pad to correct length
|
||||||
|
if is_time_record:
|
||||||
|
# MM:SS.ms is 7 characters long
|
||||||
|
# if there are single digit minutes, add a space for formatting.
|
||||||
|
score = get_time_str(score)
|
||||||
|
if score.find(":") and len(score.split(":", maxsplit=1)[0]) < 2:
|
||||||
|
score = " " + score
|
||||||
|
else:
|
||||||
|
score = str(int(score)).rjust(7, " ")
|
||||||
|
|
||||||
|
return f"{rank}: {username} - {score}".ljust(pad_length, " ")
|
||||||
|
|
||||||
|
|
||||||
def get_time_str(time_in: float) -> str:
|
def get_time_str(time_in: float) -> str:
|
||||||
"""
|
"""
|
||||||
Formats a float value into the desired string format for a timestamp.
|
Formats a float value into the desired string format for a timestamp.
|
||||||
|
|||||||
Reference in New Issue
Block a user