Module: FriendlyNumbers::NumberToHumanSize
- Extended by:
- NumberToHumanSize
- Included in:
- NumberToHumanSize
- Defined in:
- lib/friendly_numbers/number_to_human_size.rb
Instance Method Summary collapse
- #calculate_smallest_value_with_scale(value) ⇒ Object
- #convert(bytes, options) ⇒ Object
- #zero_precision_for_zero_remainder(value, default_precision = 0) ⇒ Object
Instance Method Details
#calculate_smallest_value_with_scale(value) ⇒ Object
17 18 19 20 21 22 23 24 |
# File 'lib/friendly_numbers/number_to_human_size.rb', line 17 def calculate_smallest_value_with_scale(value) scale = 0 while value >= 1024 value /= 1024.0 scale += 1 end [value, scale] end |
#convert(bytes, options) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/friendly_numbers/number_to_human_size.rb', line 5 def convert(bytes, ) = { precision: 3, scales: %w(Bytes KB MB GB TB PB) }.merge() value, scale = calculate_smallest_value_with_scale(bytes) precision = zero_precision_for_zero_remainder(value, [:precision]) format("%.#{precision}f %s", value, [:scales][scale]) end |
#zero_precision_for_zero_remainder(value, default_precision = 0) ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/friendly_numbers/number_to_human_size.rb', line 26 def zero_precision_for_zero_remainder(value, default_precision = 0) if (value % 1).zero? 0 else default_precision end end |