Sha256: 89559107ced23923987b083e1eb2c444adfb1a9e71ea0f9c895c1fad6685b67c

Contents?: true

Size: 963 Bytes

Versions: 3

Compression:

Stored size: 963 Bytes

Contents

class Numeric
  include ErrorHelper

  Alpha26 = ("a".."z").to_a

  def to_s26
    return "" if self < 1

    s, q = "", self
    loop do
      q, r = (q - 1).divmod(26)
      s.prepend(Alpha26[r])
      break if q.zero?
    end
    s
  end

  def safe_part(part)
    if self > 0
      if part >= 0
        return part.to_f/self.to_f
      else
        raise_positive_number_only
      end
    elsif self == 0
      return 0
    else
      raise_positive_number_only
    end
  end

  def safe_percent(part, precision: 15)
    if self > 0
      if part >= 0
        return (safe_part(part)*100).round(precision)
      else
        raise_positive_number_only
      end
    elsif self == 0
      return 0
    else
      raise_positive_number_only
    end
  end

  def to_time_hash
    mm, ss = self.divmod(60)
    hh, mm = mm.divmod(60)
    dd, hh = hh.divmod(24)

    return {
      days: dd,
      hours: hh,
      minutes: mm,
      seconds: ss,
    }
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
creative_rails_utilities-0.4.0 lib/creative_rails_utilities/numeric.rb
creative_rails_utilities-0.3.5 lib/creative_rails_utilities/numeric.rb
creative_rails_utilities-0.3.4 lib/creative_rails_utilities/numeric.rb