Sha256: 6926a493cacfad7a021a3b511851c51eab98014ab60ca5d5c427499dabf72b5b

Contents?: true

Size: 968 Bytes

Versions: 3

Compression:

Stored size: 968 Bytes

Contents

module Humanize
  
  # Accommodate for large numbers
  # Big numbers are big: http://wiki.answers.com/Q/What_number_is_after_vigintillion&src=ansTT
  require File.join(File.dirname(__FILE__), 'lots')
  require File.join(File.dirname(__FILE__), 'cache')

  def humanize
    num = self.to_i
    o = ''
    if num < 0
      o += 'negative '
      num = num.abs
    end
    if num.zero?
      o += 'zero'
    else
      sets = []
      i = 0
      f = false
      while !num.zero?
        num, r = num.divmod(1000)
        sets << LOTS[i] + (!sets.empty? ? (f ? ' and' : ',') : '') if !(r.zero? || i.zero?)
        f = true if i.zero? && r < 100
        
        sets << SUB_ONE_THOUSAND[r] if !r.zero?
        i = i.succ
        
      end
      o += sets.reverse.join(' ')
    end
    
    o += ' point ' + self.to_s.split(/\./, 2).last.scan(/./).map { |n| SUB_ONE_THOUSAND[n.to_i] }.join(' ') if self.class == Float
    o
  end
end

class Numeric
  include Humanize
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
humanize-1.1.2 lib/humanize.rb
humanize-1.1.1 lib/humanize.rb
humanize-1.1.0 lib/humanize.rb