Sha256: f317a289c31e41352e80bd581e718b6436a97f68c2840a9ffbd121d0c55a7276

Contents?: true

Size: 1.2 KB

Versions: 9

Compression:

Stored size: 1.2 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

    # similar to Rails' #time_ago_in_words
    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

9 entries across 9 versions & 1 rubygems

Version Path
duck_puncher-2.3.0 lib/duck_puncher/numeric.rb
duck_puncher-2.2.0 lib/duck_puncher/numeric.rb
duck_puncher-2.1.0 lib/duck_puncher/numeric.rb
duck_puncher-2.0.0 lib/duck_puncher/numeric.rb
duck_puncher-1.0.0 lib/duck_puncher/numeric.rb
duck_puncher-0.2.0 lib/duck_puncher/numeric.rb
duck_puncher-0.1.2 lib/duck_puncher/numeric.rb
duck_puncher-0.1.1 lib/duck_puncher/numeric.rb
duck_puncher-0.1.0 lib/duck_puncher/numeric.rb