Class: Humr::Handler::SIPrefix

Inherits:
Humr::Handler show all
Defined in:
lib/humr/handler/si_prefix.rb

Constant Summary collapse

PREFIXES =
[ '' ] + %w(k M G T P E Z Y)

Instance Method Summary collapse

Methods inherited from Humr::Handler

[], #name, register

Instance Method Details

#baseObject



9
10
11
# File 'lib/humr/handler/si_prefix.rb', line 9

def base
  1000
end

#replace(s, &block) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/humr/handler/si_prefix.rb', line 13

def replace(s, &block)
  if /^\d{4,}$/ === s
    s.gsub(/(\d{4,})/) do |size|
      n = size.to_f
      i = 0
      while n >= base and i < PREFIXES.length - 1
        n = n / base
        i = i + 1
      end

      format = if n < 10
        '%.1f%s'
      else
        '%d%s'
      end

      yield format % [ n, PREFIXES[i] ]
    end
  end
end