class Integer

Private Class Methods

_origin(name) click to toggle source
# File lib/ruby_hex/integer.rb, line 2
def self._origin(name)
  alias_method "_origin_#{name}", name
end

Public Instance Methods

ceil(ndigits = 0, base: 0x10) click to toggle source
# File lib/ruby_hex/integer.rb, line 36
def ceil(ndigits = 0, base: 0x10)
  -(-self).floor(ndigits, base: base)
end
digits(base = 0x10) click to toggle source
# File lib/ruby_hex/integer.rb, line 13
def digits(base = 0x10)
  _origin_digits(base)
end
floor(ndigits = 0, base: 0x10) click to toggle source
# File lib/ruby_hex/integer.rb, line 41
def floor(ndigits = 0, base: 0x10)
  return self if ndigits >= 0

  ndigits = -ndigits.to_i
  self - self % base**ndigits
end
inspect(base: 0x10) click to toggle source
# File lib/ruby_hex/integer.rb, line 18
def inspect(base: 0x10)
  per =
    case base
    when 0x2
      '0b'
    when 0x10
      '0x'
    when 0x8
      '0'
    when 0xa
      ''
    else
      raise ArgumentError, "base #{base} can't inspect"
    end
  "#{'-' if negative?}#{per}#{abs.to_s(base)}"
end
round(ndigits = 0, half: :up, base: 0x10) click to toggle source
# File lib/ruby_hex/integer.rb, line 54
def round(ndigits = 0, half: :up, base: 0x10)
  return self if ndigits >= 0

  ndigits = ndigits.to_i
  half = :up if half.nil?
  n = self % base**-ndigits / base**(-ndigits - 0x1)
  case n <=> (base / 0x2)
  when -1
    floor(ndigits, base: base)
  when 1
    ceil(ndigits, base: base)
  when 0
    case half
    when :up
      (negative? ? -1 : 1) * abs.ceil(ndigits, base: base)
    when :down
      truncate(ndigits, base: base)
    when :even
      fl = floor(ndigits, base: base)
      if (fl % base**(-ndigits + 0x1) / base**-ndigits).even?
        fl
      else
        ceil(ndigits, base: base)
      end
    else
      raise ArgumentError, "invalid rounding mode: #{half}"
    end
  end
end
to_s(base = 0x10) click to toggle source
# File lib/ruby_hex/integer.rb, line 8
def to_s(base = 0x10)
  _origin_to_s(base)
end
truncate(ndigits = 0, base: 0x10) click to toggle source
# File lib/ruby_hex/integer.rb, line 49
def truncate(ndigits = 0, base: 0x10)
  (negative? ? -0x1 : 0x1) * abs.floor(ndigits, base: base)
end