Sha256: 6dac224d5dde8bc606f43a1cafeca7bcd522b37389185a1741928e7a901bb170
Contents?: true
Size: 879 Bytes
Versions: 2
Compression:
Stored size: 879 Bytes
Contents
module DeathAndTaxes class Country def initialize code, yml = nil @taxes = {} @states = {} @code = code parse yml if yml end def parse yml yml['taxes'].each do |tax_name, infos| @taxes[tax_name] = TaxInfo.new(tax_name, infos) end yml['states'].each do |state_code, state_yml| @states[state_code] = State.new(state_code, state_yml) end end def applicable_taxes from, to, date if from[:country] == to[:country] && to[:country] == @code @states[from[:state]].applicable_taxes to[:state], date else [] end end def applies_taxes? from, to, date applicable_taxes(from, to, date).any? end def build_tax tax, date @taxes[tax].try(:build, date) || @states.map{|t, s| s.build_tax(tax, date)} end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
death_and_taxes-0.0.3 | lib/death_and_taxes/country.rb |
death_and_taxes-0.0.2 | lib/death_and_taxes/country.rb |