Module: Speedrun::Formatter
- Defined in:
- lib/speedrun/formatter.rb
Constant Summary collapse
- SECONDS_PER_MINUTE =
60- SECONDS_PER_HOUR =
3600- BYTES_PER_KB =
1024- BYTES_PER_MB =
1024 * 1024
- BYTES_PER_GB =
1024 * 1024 * 1024
Class Method Summary collapse
- .format_duration(seconds) ⇒ Object
- .format_filesize(bytes) ⇒ Object
- .format_time(seconds) ⇒ Object
- .parse_time(time_string) ⇒ Object
Class Method Details
.format_duration(seconds) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/speedrun/formatter.rb', line 24 def self.format_duration(seconds) if seconds < SECONDS_PER_MINUTE format('%.2fs', seconds) elsif seconds < SECONDS_PER_HOUR minutes = (seconds / SECONDS_PER_MINUTE).to_i secs = seconds % SECONDS_PER_MINUTE format('%dm %.1fs', minutes, secs) else hours = (seconds / SECONDS_PER_HOUR).to_i minutes = ((seconds % SECONDS_PER_HOUR) / SECONDS_PER_MINUTE).to_i secs = seconds % SECONDS_PER_MINUTE format('%dh %dm %ds', hours, minutes, secs.to_i) end end |
.format_filesize(bytes) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/speedrun/formatter.rb', line 39 def self.format_filesize(bytes) if bytes < BYTES_PER_KB format('%d B', bytes) elsif bytes < BYTES_PER_MB format('%.1f KB', bytes / BYTES_PER_KB.to_f) elsif bytes < BYTES_PER_GB format('%.1f MB', bytes / BYTES_PER_MB.to_f) else format('%.1f GB', bytes / BYTES_PER_GB.to_f) end end |
.format_time(seconds) ⇒ Object
11 12 13 14 15 16 17 |
# File 'lib/speedrun/formatter.rb', line 11 def self.format_time(seconds) hours = (seconds / SECONDS_PER_HOUR).to_i minutes = ((seconds % SECONDS_PER_HOUR) / SECONDS_PER_MINUTE).to_i secs = seconds % SECONDS_PER_MINUTE format('%02d:%02d:%06.3f', hours, minutes, secs) end |
.parse_time(time_string) ⇒ Object
19 20 21 22 |
# File 'lib/speedrun/formatter.rb', line 19 def self.parse_time(time_string) hours, minutes, seconds = time_string.split(':').map(&:to_f) (hours * SECONDS_PER_HOUR) + (minutes * SECONDS_PER_MINUTE) + seconds end |