diff --git a/oxrlib/commands/historical.py b/oxrlib/commands/historical.py index 075fa8386d13c994058ab6ec7ab0c32a62ba244b..e85569f20f5d8bf39b8fc3cd5edb82f22186ad31 100644 --- a/oxrlib/commands/historical.py +++ b/oxrlib/commands/historical.py @@ -1,12 +1,22 @@ +from babel.numbers import format_currency + from .. import rate as oxrrate -def format_one_rate(rate, from_amt, from_curr, to_curr): - return "{:g} {} = {:g} {}".format( - from_amt, from_curr, rate.convert(from_amt, from_curr, to_curr), to_curr) +CURRENCY_FMT = '#,##0.### ¤¤' +RATE_FMT = '{from_amt:g} {from_curr} = {to_amt:g} {to_curr}' + +def format_conversion(rate, from_amt, from_curr, to_curr): + to_amt = rate.convert(from_amt, from_curr, to_curr) + return "{} = {}".format( + format_currency(from_amt, from_curr, CURRENCY_FMT), + format_currency(to_amt, to_curr, CURRENCY_FMT), + ) def format_rate_pair(rate, from_curr, to_curr): - yield format_one_rate(rate, 1, from_curr, to_curr) - yield format_one_rate(rate, 1, to_curr, from_curr) + amt = rate.convert(1, from_curr, to_curr) + yield RATE_FMT.format(from_amt=1, from_curr=from_curr, to_amt=amt, to_curr=to_curr) + amt = rate.convert(1, to_curr, from_curr) + yield RATE_FMT.format(from_amt=1, from_curr=to_curr, to_amt=amt, to_curr=from_curr) def run(config, stdout, stderr): loaders = config.get_loaders() @@ -22,6 +32,6 @@ def run(config, stdout, stderr): print(*format_rate_pair(rate, config.args.from_currency, config.args.to_currency), sep='\n', file=stdout) else: - print(format_one_rate(rate, config.args.amount, - config.args.from_currency, config.args.to_currency), + print(format_conversion(rate, config.args.amount, + config.args.from_currency, config.args.to_currency), file=stdout)