class Fbe::Award::Bill
A bill.
def greeting
def greeting items = @lines.map { |l| "#{format('%+d', l[:v])} #{l[:t]}" } case items.size when 0 "You've earned nothing. " when 1 "You've earned #{format('%+d', points)} points. " else "You've earned #{format('%+d', points)} points for this: #{items.join('; ')}. " end end
def initialize
def initialize @lines = [] @vars = {} end
def line(value, text)
def line(value, text) return if value.zero? text = text.gsub(/\$\{([a-z_0-9]+)\}/) { |_x| @vars[Regexp.last_match[1].to_sym] } @lines << { v: value, t: text } end
def points
def points @lines.sum { |l| l[:v] }.to_f.round.to_i end
def set(var, value)
def set(var, value) @vars[var] = value end