Prettify expressions

This commit is contained in:
Davte 2020-05-18 19:31:26 +02:00
parent a7fd054106
commit 7f140371b6
2 changed files with 14 additions and 1 deletions

View File

@ -11,7 +11,7 @@ __author__ = "Davide Testa"
__email__ = "davide@davte.it" __email__ = "davide@davte.it"
__credits__ = ["Marco Origlia", "Nick Lee @Nickoala"] __credits__ = ["Marco Origlia", "Nick Lee @Nickoala"]
__license__ = "GNU General Public License v3.0" __license__ = "GNU General Public License v3.0"
__version__ = "2.5.18" __version__ = "2.5.19"
__maintainer__ = "Davide Testa" __maintainer__ = "Davide Testa"
__contact__ = "t.me/davte" __contact__ = "t.me/davte"

View File

@ -7,6 +7,7 @@ import datetime
import json import json
import logging import logging
import operator import operator
import re
from collections import OrderedDict from collections import OrderedDict
from typing import List, Union from typing import List, Union
@ -182,6 +183,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)")
spaced_operators = r"\1 \2 \3"
operators_space_remover = re.compile(r"(\d)\s*(\*\*)\s*(\d)")
un_spaced_operators = r"\1\2\3"
def prettify_expression(expression):
expression = operators_spacer.sub(spaced_operators, expression)
expression = operators_space_remover.sub(un_spaced_operators, expression)
return expression
def get_calculator_keyboard(additional_data: list = None): def get_calculator_keyboard(additional_data: list = None):
@ -367,6 +378,7 @@ async def calculate_session(bot: Bot,
expression += calc_buttons[input_value]['value'] expression += calc_buttons[input_value]['value']
else: else:
logging.error(f"Invalid input from calculator button: {input_value}") logging.error(f"Invalid input from calculator button: {input_value}")
expression = prettify_expression(expression)
if record: if record:
bot.db['calculations'].update( bot.db['calculations'].update(
dict( dict(
@ -449,6 +461,7 @@ async def _calculate_command(bot: Bot,
id=record_id id=record_id
) )
expression = f"{record['expression'] or ''}\n{text}" expression = f"{record['expression'] or ''}\n{text}"
expression = prettify_expression(expression)
bot.db['calculations'].update( bot.db['calculations'].update(
dict( dict(
id=record_id, id=record_id,