Class: HumanDuration::Duration
- Inherits:
-
Object
- Object
- HumanDuration::Duration
- Defined in:
- lib/human_duration.rb
Overview
docs to do
Class Method Summary collapse
- .add_time(value, name, plural = true) ⇒ Object
- .add_time_long ⇒ Object
- .add_time_short ⇒ Object
- .comma_or_not(count) ⇒ Object
- .count_items ⇒ Object
- .display_type(type = 'compact') ⇒ Object
- .generate_output ⇒ Object
- .human_duration(seconds) ⇒ Object
- .pluralize(number) ⇒ Object
- .reset ⇒ Object
- .split_seconds(seconds) ⇒ Object
Class Method Details
.add_time(value, name, plural = true) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/human_duration.rb', line 58 def self.add_time(value, name, plural = true) return if value < 1 && $type != 'full' $output_buffer << if plural format('%<value>s %<name>s%<plural>s', value: value, name: name, plural: pluralize(value)) else format('%<value>s %<name>s', value: value, name: name) end $item_count -= 1 $output_buffer << comma_or_not($item_count) end |
.add_time_long ⇒ Object
87 88 89 90 91 |
# File 'lib/human_duration.rb', line 87 def self.add_time_long $time_values.reverse_each do |name, value| add_time(value, name) end end |
.add_time_short ⇒ Object
93 94 95 96 97 |
# File 'lib/human_duration.rb', line 93 def self.add_time_short $time_values.reverse_each do |name, value| add_time(value, SHORT_NAME_MAP[name], false) end end |
.comma_or_not(count) ⇒ Object
50 51 52 53 54 55 56 |
# File 'lib/human_duration.rb', line 50 def self.comma_or_not(count) return ', ' if count > 1 return ' & ' if count == 1 && $type == 'short' return ' and ' if count == 1 '' end |
.count_items ⇒ Object
81 82 83 84 85 |
# File 'lib/human_duration.rb', line 81 def self.count_items $time_values.each do |_name, value| $item_count += 1 if value > 0 || $type == 'full' end end |
.display_type(type = 'compact') ⇒ Object
19 20 21 22 23 |
# File 'lib/human_duration.rb', line 19 def self.display_type(type = 'compact') raise ArgumentError.new('Invalid type - Valid options are:- compact, short and full') unless VALID_TYPES.include? type $type = type end |
.generate_output ⇒ Object
99 100 101 102 103 104 105 |
# File 'lib/human_duration.rb', line 99 def self.generate_output if $type == 'short' add_time_short else add_time_long end end |
.human_duration(seconds) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/human_duration.rb', line 25 def self.human_duration(seconds) reset return 'negative' if seconds < 0 return 'now' if seconds.zero? split_seconds(seconds) count_items generate_output $output_buffer end |
.pluralize(number) ⇒ Object
44 45 46 47 48 |
# File 'lib/human_duration.rb', line 44 def self.pluralize(number) return 's' unless number == 1 '' end |
.reset ⇒ Object
38 39 40 41 42 |
# File 'lib/human_duration.rb', line 38 def self.reset $time_values = {} $item_count = 0 $output_buffer = '' end |
.split_seconds(seconds) ⇒ Object
70 71 72 73 74 75 76 77 78 79 |
# File 'lib/human_duration.rb', line 70 def self.split_seconds(seconds) SPLIT_TYPES.map do |count, name| if seconds > 0 seconds, n = seconds.divmod(count) $time_values[name] = n else $time_values[name] = 0 end end end |