Module: SIValue

Defined in:
lib/sivalue.rb

Constant Summary collapse

PREFIX_MAGNITUDES =
{
  'm' => 6, 'k' => 3, 'b' => 9
}

Class Method Summary collapse

Class Method Details

.from(str) ⇒ Object

Returns BigDecimal



9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/sivalue.rb', line 9

def self.from(str)
  _, num, prefix = str.match(/^([-+]?[0-9]*\.?[0-9]*)(#{PREFIX_MAGNITUDES.keys.join('|')})?/oi).to_a
  if num
    if prefix
      BigDecimal.new(num) * 10**PREFIX_MAGNITUDES[prefix]
    else
      BigDecimal.new(num)
    end
  else
    0.0
  end
end