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) || (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