rework the decision tree for interactive mode

This commit is contained in:
Christopher Teutsch 2019-05-08 11:16:53 +02:00
parent 6202381e52
commit 1eec302ad8
Signed by: iwonder
GPG Key ID: 0EE33D788D50130D

View File

@ -82,20 +82,37 @@ d | date: Print the date which the data is from.
print(res.date)
elif len(argv[0]) == 3 or len(argv[1]) == 3:
# more than 3 letter abbreviations are invalid
if is_float(argv[0]):
# amount first -> convert to currency in argv[1]
print(fmt_and_calc(
cur=argv[1].upper(),
amt=float(argv[0]),
res=res,
direction=DIRECTION_FROM_EUR))
cur_use = str
amt_use = float
dir_use = int
if len(argv) == 1 and not is_float(argv[0]):
# only currency specified
cur_use = argv[0].upper()
amt_use = 1
dir_use = DIRECTION_TO_EUR
elif is_float(argv[0]):
# amount first -> convert EUR to currency in argv[1]
cur_use = argv[1].upper()
amt_use = float(argv[0])
dir_use = DIRECTION_FROM_EUR
elif is_float(argv[1]):
# currency first -> convert to EUR
# currency first -> convert argv[1] to EUR
cur_use = argv[0].upper()
amt_use = float(argv[1])
dir_use = DIRECTION_TO_EUR
else:
raise ValueError
# check that the currency exists
if cur_use not in res.rates:
raise ValueError
else:
print(fmt_and_calc(
cur=argv[0].upper(),
amt=float(argv[1]),
cur=cur_use,
amt=amt_use,
res=res,
direction=DIRECTION_TO_EUR))
direction=dir_use
))
else:
print("Not implemented: '" + " ".join(argv) + "'")
except IndexError:
@ -103,6 +120,8 @@ d | date: Print the date which the data is from.
pass
else:
print("Too few arguments: '" + " ".join(argv) + "'")
except ValueError:
print("The currency specified does not exist.")
def is_float(string: str) -> bool:
try: