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