Class: SortBytes::SizeSorter

Inherits:
Object
  • Object
show all
Defined in:
lib/sort_bytes.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(lines) ⇒ SizeSorter

Returns a new instance of SizeSorter.



7
8
9
# File 'lib/sort_bytes.rb', line 7

def initialize(lines)
  @lines = lines
end

Instance Attribute Details

#linesObject

Returns the value of attribute lines.



5
6
7
# File 'lib/sort_bytes.rb', line 5

def lines
  @lines
end

Instance Method Details

#size_in_bytes(size) ⇒ Object



17
18
19
20
21
22
23
# 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) ⇒ Object



25
26
27
# File 'lib/sort_bytes.rb', line 25

def size_token(line)
  line[/^\s*(\S+)/, 1]
end

#sortedObject



11
12
13
14
15
# 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