class US_2018_Tax::Tax
Public Class Methods
new(net_income)
click to toggle source
# File lib/US_2018_Tax/builder.rb, line 4 def initialize(net_income) @net_income = net_income end
Public Instance Methods
calculate()
click to toggle source
# File lib/US_2018_Tax/builder.rb, line 8 def calculate return calculate_tax(@net_income) if income_numeric? end
calculate_tax(net_income)
click to toggle source
# File lib/US_2018_Tax/builder.rb, line 16 def calculate_tax(net_income) case when net_income <= 9525 first_bracket(net_income) when net_income <= 38_700 second_bracket(net_income) when net_income <= 82_500 third_bracket(net_income) when net_income <= 157_500 fourth_bracket(net_income) when net_income <= 200_000 fifth_bracket(net_income) when net_income <= 500_000 sixth_bracket(net_income) when net_income >= 500_001 seventh_bracket(net_income) end end
calculate_with_standard_deduction()
click to toggle source
# File lib/US_2018_Tax/builder.rb, line 35 def calculate_with_standard_deduction standard_deduction = 12_000 net_income = @net_income - standard_deduction calculate_tax(net_income) if income_numeric? end
gross_income()
click to toggle source
# File lib/US_2018_Tax/builder.rb, line 41 def gross_income @net_income - calculate_tax(@net_income) end
gross_with_deduction()
click to toggle source
# File lib/US_2018_Tax/builder.rb, line 45 def gross_with_deduction @net_income - calculate_with_standard_deduction end
income_numeric?()
click to toggle source
# File lib/US_2018_Tax/builder.rb, line 12 def income_numeric? (@net_income.is_a? Numeric || @net_income.integer?) end
Private Instance Methods
fifth_bracket(net_income)
click to toggle source
# File lib/US_2018_Tax/builder.rb, line 67 def fifth_bracket(net_income) (32_089.50 + (net_income - 157_500) * 0.32).round(2) end
first_bracket(net_income)
click to toggle source
# File lib/US_2018_Tax/builder.rb, line 51 def first_bracket(net_income) net_income * 0.10 end
fourth_bracket(net_income)
click to toggle source
# File lib/US_2018_Tax/builder.rb, line 63 def fourth_bracket(net_income) (14_089.50 + (net_income - 82_500) * 0.24).round(2) end
second_bracket(net_income)
click to toggle source
# File lib/US_2018_Tax/builder.rb, line 55 def second_bracket(net_income) (952.50 + (net_income - 9_525) * 0.12).round(2) end
seventh_bracket(net_income)
click to toggle source
# File lib/US_2018_Tax/builder.rb, line 75 def seventh_bracket(net_income) (150_689.50 + (net_income - 500_000) * 0.37).round(2) end
sixth_bracket(net_income)
click to toggle source
# File lib/US_2018_Tax/builder.rb, line 71 def sixth_bracket(net_income) (45_689.50 + (net_income - 200_000) * 0.35).round(2) end
third_bracket(net_income)
click to toggle source
# File lib/US_2018_Tax/builder.rb, line 59 def third_bracket(net_income) (4453.50 + (net_income - 38_700) * 0.22).round(2) end