class SortBytes::SizeSorter

Attributes

lines[RW]

Public Class Methods

new(lines) click to toggle source
# File lib/sort_bytes.rb, line 7
def initialize(lines)
  @lines = lines
end

Public Instance Methods

size_in_bytes(size) click to toggle source
# File lib/sort_bytes.rb, line 17
def size_in_bytes(size)
  num, suffix = size.split(/([^0-9.]+)/)
  suffix ||= 'B'
  power = %w(B K M G T P).index(suffix[0,1]) * 3
  multiplier = 10 ** power
  num.to_f * multiplier
end
size_token(line) click to toggle source
# File lib/sort_bytes.rb, line 25
def size_token(line)
  line[/^\s*(\S+)/, 1]
end
sorted() click to toggle source
# File lib/sort_bytes.rb, line 11
def sorted
  lines.map do |line|
    [ size_in_bytes(size_token(line)), line]
  end.sort.map(&:last)
end