require 'time_difference'

module RefinedTimeDifference
  refine(TimeDifference) do
    def humanize_higher_than(limit)
      limit_index = TimeDifference::TIME_COMPONENTS.index(limit)

      diff_parts = []
      in_general.each_with_index do |array, index|
        part, quantity = array
        next if quantity <= 0 or limit_index < index
        part = part.to_s.humanize

        if quantity <= 1
          part = part.singularize
        end

        diff_parts << "#{quantity} #{part}"
      end

      last_part = (diff_parts.pop or '')
      if diff_parts.empty?
        return last_part
      else
        return [diff_parts.join(', '), last_part].join(' and ')
      end
    end
  end
end