Module: Factorix::Formatting

Included in:
CLI::Commands::Cache::Evict, CLI::Commands::Cache::Stat
Defined in:
lib/factorix/formatting.rb

Overview

Formatting utilities for human-readable output

This module provides methods for formatting sizes and durations in a human-readable format for CLI output.

Examples:

include Factorix::Formatting
format_size(1536)      # => "1.5 KiB"
format_duration(3661)  # => "1h 1m"

Instance Method Summary collapse

Instance Method Details

#format_duration(seconds) ⇒ String

Format duration value for display

Parameters:

  • seconds (Integer, Float, nil)

    duration in seconds

Returns:

  • (String)

    formatted duration (“-” if nil)



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/factorix/formatting.rb', line 38

def format_duration(seconds)
  return "-" if seconds.nil?

  seconds = Integer(seconds)
  return "#{seconds}s" if seconds < 60

  minutes = seconds / 60
  return "#{minutes}m" if minutes < 60

  hours = minutes / 60
  remaining_minutes = minutes % 60
  return "#{hours}h #{remaining_minutes}m" if hours < 24

  days = hours / 24
  remaining_hours = hours % 24
  "#{days}d #{remaining_hours}h"
end

#format_size(size) ⇒ String

Format size value for display using binary prefixes (IEC)

Parameters:

  • size (Integer, nil)

    size in bytes

Returns:

  • (String)

    formatted size (“unlimited” if nil)



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/factorix/formatting.rb', line 18

def format_size(size)
  return "unlimited" if size.nil?
  return "0 B" if size == 0

  units = %w[B KiB MiB GiB TiB]
  unit_index = 0
  value = Float(size)

  while value >= 1024 && unit_index < units.size - 1
    value /= 1024
    unit_index += 1
  end

  unit_index == 0 ? "#{size} B" : "#{"%.1f" % value} #{units[unit_index]}"
end