Module: UsefulUtilities::Size::Bit

Includes:
Standard::Decimal
Included in:
UsefulUtilities::Size
Defined in:
lib/useful_utilities/size/bit.rb

Overview

Possible units:

:bit  - bits
:kbit - kilobits
:Mbit - megabits
:Gbit - gigabits
:Tbit - terabits

Used SI standard en.wikipedia.org/wiki/Binary_prefix

Decimal
1 K = 1000

Constant Summary

Constants included from Standard::Decimal

Standard::Decimal::GIGA, Standard::Decimal::KILO, Standard::Decimal::MEGA, Standard::Decimal::TERA

Instance Method Summary collapse

Methods included from Standard::Decimal

#to_decimal_bi, #to_giga, #to_kilo, #to_mega, #to_tera

Instance Method Details

#bits_per_sec_to_human_readable(value_in_bits) ⇒ String

Returns human readable value.

Parameters:

  • value_in_bits (Integer)

    value in bits

Returns:

  • (String)

    human readable value



84
85
86
87
88
89
# File 'lib/useful_utilities/size/bit.rb', line 84

def bits_per_sec_to_human_readable(value_in_bits)
  unit  = suitable_unit_for_bits(value_in_bits)
  value = bits_to_human_size(value_in_bits, unit.to_sym)

  "#{value} #{unit}/s"
end

#bits_to_human_size(size, unit, rounder = 3) ⇒ Numeric

Returns humanized size in provided unit.

Parameters:

  • size (Numeric)
  • unit (Symbol)
  • rounder (Integer) (defaults to: 3)

Returns:

  • (Numeric)

    humanized size in provided unit



56
57
58
59
60
61
62
63
64
65
# File 'lib/useful_utilities/size/bit.rb', line 56

def bits_to_human_size(size, unit, rounder = 3)
  case unit
  when :bit  then size.round(rounder)
  when :kbit then to_kilobits(size, :bit).round(rounder)
  when :Mbit then to_megabits(size, :bit).round(rounder)
  when :Gbit then to_gigabits(size, :bit).round(rounder)
  when :Tbit then to_terabits(size, :bit).round(rounder)
  else  unsupported_unit!(unit)
  end
end

#suitable_unit_for_bits(value) ⇒ Symbol

Returns suitable unit.

Parameters:

  • value (Integer)

Returns:

  • (Symbol)

    suitable unit

Raises:

  • (ArgumentError)

    if value is not integer or less than zero



70
71
72
73
74
75
76
77
78
79
80
# File 'lib/useful_utilities/size/bit.rb', line 70

def suitable_unit_for_bits(value)
  return not_integer!(value)          unless value.is_a?(Integer)
  return not_positive_integer!(value) unless value > -1

  if value.to_s.length    <= 3  then :bit
  elsif value.to_s.length <= 6  then :kbit
  elsif value.to_s.length <= 9  then :Mbit
  elsif value.to_s.length <= 12 then :Gbit
  else :Tbit
  end
end

#to_bits(size, unit) ⇒ Numeric

Returns size in bits.

Parameters:

Returns:



48
49
50
# File 'lib/useful_utilities/size/bit.rb', line 48

def to_bits(size, unit)
  to_decimal_bi(size, bit_prefix(unit))
end

#to_gigabits(size, unit) ⇒ Numeric

Returns size in gigabits.

Parameters:

Returns:



27
28
29
# File 'lib/useful_utilities/size/bit.rb', line 27

def to_gigabits(size, unit)
  to_giga(size, bit_prefix(unit))
end

#to_kilobits(size, unit) ⇒ Numeric

Returns size in kilobits.

Parameters:

Returns:



41
42
43
# File 'lib/useful_utilities/size/bit.rb', line 41

def to_kilobits(size, unit)
  to_kilo(size, bit_prefix(unit))
end

#to_megabits(size, unit) ⇒ Numeric

Returns size in megabits.

Parameters:

Returns:



34
35
36
# File 'lib/useful_utilities/size/bit.rb', line 34

def to_megabits(size, unit)
  to_mega(size, bit_prefix(unit))
end

#to_terabits(size, unit) ⇒ Numeric

Returns size in terabits.

Parameters:

Returns:



20
21
22
# File 'lib/useful_utilities/size/bit.rb', line 20

def to_terabits(size, unit)
  to_tera(size, bit_prefix(unit))
end