-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhandler.py
55 lines (50 loc) · 1.83 KB
/
handler.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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import var
import stackop
import sysfuncs
from decimal import Decimal
import screen
def num_handle(): # why not move numbers to stack here as well? Because we don't know whether the number has finished
'''sets number variable from key'''
if var.number is None:
var.number = var.key
elif var.number:
var.number = str(var.number) + var.key
var.tostack = False
def match_and_operate(keyw):
if keyw in var.operation_single:
stackop.adv_operate_single(var.ADV_OPERATORS[keyw])
screen.draw()
elif keyw in var.operation_double:
stackop.adv_operate_double(var.ADV_OPERATORS[keyw])
screen.draw()
elif keyw in var.operation_none:
stackop.adv_operate_none(var.MATHS_CONSTANTS[keyw])
screen.draw()
elif keyw in var.operation_custom:
var.ADV_OPERATORS[var.keyword]()
screen.draw()
def character_handler(char):
'''handles all characters (non numbers) and redirects to appropiate control'''
var.command = True
# why can comhelp not be regular keyword
if var.recurs:
var.recurscommand += char
try:
if var.recurscommand[1] == 'a' and var.recurscommand[2] in ['+','-','*','/']:
sysfuncs.recursion()
elif var.recurscommand[1] in var.ADV_OPERATORS:
sysfuncs.recursion()
except IndexError:
pass
elif var.keyword is None:
var.keyword = var.key
else:
var.keyword += char
if var.keyword is None:
pass
elif var.keyword in var.ADV_OPERATORS or var.keyword in var.MATHS_CONSTANTS:
match_and_operate(var.keyword)
var.keyword = None
var.number = None
elif var.keyword[0] == '?' and var.keyword[1:] in var.ADV_OPERATORS:
sysfuncs.inline_help()