Small fixes in calculation command

- Consider `_` as a digit when prettifying expressions
- Shorten buffer time for calculation sessions
- Redundant escape
This commit is contained in:
Davte 2020-05-19 15:20:23 +02:00
parent cd7392c2fd
commit e3cde032ba

View File

@ -184,16 +184,16 @@ def get_operators() -> dict:
calc_buttons = get_calc_buttons() calc_buttons = get_calc_buttons()
operators = get_operators() operators = get_operators()
operators_spacer = re.compile(r"([\d\(\)])\s*([+\-*%]|/{1,2})\s*([\d\(\)])") operators_spacer = re.compile(r"([\d()_])\s*([+\-*%]|/{1,2})\s*([\d()_])")
spaced_operators = r"\1 \2 \3" spaced_operators = r"\1 \2 \3"
operators_space_remover = re.compile(r"([\d\(\)])\s*(\*\*)\s*([\d\(\)])") operators_space_remover = re.compile(r"([\d()_])\s*(\*\*)\s*([\d()_])")
non_spaced_operators = r"\1\2\3" non_spaced_operators = r"\1\2\3"
multiple_newlines_regex = re.compile(r"[\n|\r][\n|\s]{2,}") multiple_newlines_regex = re.compile(r"[\n|\r][\n|\s]{2,}")
multiple_spaces_regex = re.compile(r"[^\S\n\r]{2,}") multiple_spaces_regex = re.compile(r"[^\S\n\r]{2,}")
parentheses_regex_list = [ parentheses_regex_list = [
{'pattern': re.compile(r"[^\S\n\r]*(\()[^\S\n\r]*(\d)"), {'pattern': re.compile(r"[^\S\n\r]*(\()[^\S\n\r]*([\d_])"),
'replace': r" \1\2"}, 'replace': r" \1\2"},
{'pattern': re.compile(r"(\d)[^\S\n\r]*(\))"), {'pattern': re.compile(r"([\d_])[^\S\n\r]*(\))"),
'replace': r"\1\2"} 'replace': r"\1\2"}
] ]
@ -214,7 +214,7 @@ def prettify_expression(expression):
expression = multiple_spaces_regex.sub(' ', expression) expression = multiple_spaces_regex.sub(' ', expression)
expression = expression.replace('\n ', '\n') expression = expression.replace('\n ', '\n')
expression = expression.replace(' \n', '\n') expression = expression.replace(' \n', '\n')
return expression return expression.strip(' ')
def get_calculator_keyboard(additional_data: list = None): def get_calculator_keyboard(additional_data: list = None):
@ -360,7 +360,7 @@ def evaluate_expressions(bot: Bot,
async def calculate_session(bot: Bot, async def calculate_session(bot: Bot,
record_id: int, record_id: int,
language: str, language: str,
buffer_seconds: Union[int, float] = 1): buffer_seconds: Union[int, float] = .5):
# Wait until input ends # Wait until input ends
queue = bot.shared_data['calc'][record_id] queue = bot.shared_data['calc'][record_id]
queue_len = None queue_len = None