Sha256: 4a6980fdafb27fd0940ca86ad065ed610538b6b539d96d0f85f3b87bb169629a

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

module DuckPuncher
  module Numeric
    def to_currency(prefix = '')
      "#{prefix}%.2f" % self.round(2)
    end

    def to_duration(seconds = false)
      secs = to_i
      mins = secs / 60
      hours = mins / 60
      buffer = ''
      if hours > 0
        num_mins = mins % 60
        buffer << "#{hours} h"
        buffer << " #{num_mins} min" unless num_mins.zero?
      elsif mins > 0
        num_secs = secs % 60
        buffer << "#{mins} min"
        buffer << " #{num_secs} s" if seconds && num_secs.nonzero?
      elsif seconds && secs >= 0
        buffer << "#{secs} s"
      end
      buffer
    end

    def to_time_ago
      secs = to_i
      mins = secs / 60
      hours = mins / 60
      days = hours / 24
      buffer = ''
      if days > 0
        buffer << "#{days} #{'day'.pluralize(days)}"
      elsif hours > 0
        buffer << "#{hours} #{'hour'.pluralize(hours)}"
      elsif mins > 0
        buffer << "#{mins} #{'minute'.pluralize(mins)}"
      elsif secs >= 0
        buffer << "less than a minute"
      end
      buffer << ' ago'
    end

    def to_rad
      self / 180 * Math::PI
    end
  end
end

Numeric.send(:include, DuckPuncher::Numeric)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
duck_puncher-0.0.6 lib/duck_puncher/numeric.rb