29 lines
687 B
Plaintext
29 lines
687 B
Plaintext
struct Item {
|
|
name, price, quant
|
|
}
|
|
|
|
var check = %q{
|
|
Hamburger 5.50 4000000000000000
|
|
Milkshake 2.86 2
|
|
}.lines.grep(/\S/).map { Item(.words...) }
|
|
|
|
var tax_rate = 0.0765
|
|
var fmt = "%-10s %8s %18s %22s\n"
|
|
|
|
printf(fmt, %w(Item Price Quantity Extension)...)
|
|
|
|
var subtotal = check.map { |item|
|
|
var extension = Num(item.price)*Num(item.quant)
|
|
printf(fmt, item.name, item.price, item.quant, extension.round(-2))
|
|
extension
|
|
}.sum(0)
|
|
|
|
printf(fmt, '', '', '', '-----------------')
|
|
printf(fmt, '', '', 'Subtotal ', subtotal)
|
|
|
|
var tax = (subtotal * tax_rate -> round(-2))
|
|
printf(fmt, '', '', 'Tax ', tax)
|
|
|
|
var total = subtotal+tax
|
|
printf(fmt, '', '', 'Total ', total)
|