class Integer

Calculate the number of digits in an integer.

1.length #=> 1 10.length #=> 2 100.length #=> 3

CREDIT: Victor H. Goff III

Public Instance Methods

bit(bit) click to toggle source

Set a bit.

0.bit!(4)  #=> 8

Using an inverted bit will clear a bit.

10.bit!(~3)      #=> 2
0xb0100.bit(~3)  #=> 0

CREDIT: Thomas Sawyer, George Moschovitis

# File lib/core/facets/bitmask.rb, line 14
def bit(bit)
  if bit < 0
    mask = (1 << ~bit)
    self & ~mask
  else
    mask = (1 << bit)
    self | mask
  end
end
Also aliased as: bit!
bit!(bit)

Old name. Probably will be deprecated.

Alias for: bit
bit?(bit) click to toggle source

Is a bit set?

8.bit?(3)  #=> true
8.bit?(2)  #=> false

CREDIT: Thomas Sawyer, George Moschovitis

# File lib/core/facets/bitmask.rb, line 43
def bit?(bit)
  mask = (1 << bit)
  (self & mask) != 0
end
bitmask(mask) click to toggle source

Apply a bitmask.

1.bitmask(6) #=> 7

Using a inverted bitmask clears bits.

7.bitmask(~2) #=> 5
5.bitmask(~2) #=> 5

CREDIT: George Moschovitis

# File lib/core/facets/bitmask.rb, line 59
def bitmask(mask)
  if mask < 0
    self & mask
  else
    self | mask
  end
end
Also aliased as: bitmask!
bitmask!(mask)

Old name. Probably will be deprecated.

Alias for: bitmask
bitmask?(mask) click to toggle source

Is bitmask set?

7.bitmask?(7) #=> true
7.bitmask?(5) #=> true
8.bitmask?(3) #=> false

CREDIT: George Moschovitis

# File lib/core/facets/bitmask.rb, line 78
def bitmask?(mask)
  (self & mask) != 0
end
clear_bit(bit) click to toggle source

Clear bit.

CREDIT: George Moschovitis

# File lib/core/facets/bitmask.rb, line 31
def clear_bit(bit)
  mask = (1 << bit)
  self & ~mask
end
even?() click to toggle source

Returns true if this integer is even, false otherwise.

2.even?  #=> true
3.even?  #=> false

CREDIT: Daniel Schierbeck

# File lib/core/facets/integer/odd.rb, line 31
def even?
  #self % 2 == 0
  self & 1 == 0
end
fac()
Alias for: factorial
factorial() click to toggle source

Calculate the factorial of an integer.

2.factorial  #=> 2
3.factorial  #=> 6
3.factorial  #=> 24

CREDIT: Malte Milatz

# File lib/core/facets/integer/factorial.rb, line 11
def factorial
  return 1 if zero?
  f = 1
  2.upto(self) { |n| f *= n }
  f
end
Also aliased as: fac
length() click to toggle source

Returns the length of an integer as an integer.

# File lib/core/facets/integer/length.rb, line 12
def length
  to_s.length
end
multiple?(number) click to toggle source

Is is a multiple of a given number?

7.multiple?(2)  #=> false
8.multiple?(2)  #=> true

CREDIT: Trans

# File lib/core/facets/integer/multiple.rb, line 10
def multiple?(number)
  self % number == 0
end
odd?() click to toggle source

Returns true if this integer is odd, false otherwise.

2.odd?            #=> false
3.odd?            #=> true

-99.odd?          # -> true
-98.odd?          # -> false

CREDIT: Daniel Schierbeck

# File lib/core/facets/integer/odd.rb, line 15
def odd?
  #self % 2 == 1
  self & 1 == 1
end
of(&block) click to toggle source

Like times but returns a collection of the yield results.

a = 3.of { |i| "#{i+1}" }
a => [ "1", "2", "3" ]
# File lib/core/facets/integer/of.rb, line 9
def of(&block)
  Array.new(self, &block)
end
Also aliased as: times_collect, times_map
ordinal() click to toggle source
# File lib/core/facets/integer/ordinal.rb, line 3
def ordinal
  if [11,12,13].include?(self % 100)
    "#{self}th"
  else
    case (self % 10)
    when 1
      "#{self}st"
    when 2
      "#{self}nd"
    when 3
      "#{self}rd"
    else
      "#{self}th"
    end
  end
end
Also aliased as: ordinalize
ordinalize()

Rails term.

Alias for: ordinal
roman() click to toggle source
# File lib/more/facets/roman.rb, line 133
def roman
  English::RomanNumerals.roman(self) || ''
end
round_at(*args) click to toggle source

See Float#round_at.

# File lib/core/facets/numeric/round.rb, line 27
def round_at(*args)
  to_f.round_at(*args)
end
round_to(*args) click to toggle source

See Float#round_to.

# File lib/core/facets/numeric/round.rb, line 33
def round_to(*args)
  to_f.round_to(*args)
end
times_collect(&block)

Time warn aliases for of.

Alias for: of
times_map(&block)
Alias for: of
to_s_roman() click to toggle source

Converts this integer to a roman numeral.

# File lib/more/facets/roman.rb, line 139
def to_s_roman
  English::RomanNumerals.from_integer(self) || ''
end