class ChupaText::SizeParser

Public Class Methods

parse(size) click to toggle source
# File lib/chupa-text/size-parser.rb, line 30
def parse(size)
  new.parse(size)
end

Public Instance Methods

parse(size) click to toggle source
# File lib/chupa-text/size-parser.rb, line 35
def parse(size)
  case size
  when /TB?\z/i
    scale = 1024 ** 4
    number_part = $PREMATCH
  when /GB?\z/i
    scale = 1024 ** 3
    number_part = $PREMATCH
  when /MB?\z/i
    scale = 1024 ** 2
    number_part = $PREMATCH
  when /KB?\z/i
    scale = 1024 ** 1
    number_part = $PREMATCH
  when /B?\z/i
    scale = 1
    number_part = $PREMATCH
  else
    scale = 1
    number_part = size
  end

  begin
    number = Float(number_part)
  rescue ArgumentError
    raise InvalidSizeError.new(size)
  end
  (number * scale).round
end