Class Integer
In: lib/core/facets/integer/ordinal.rb
lib/core/facets/integer/length.rb
lib/core/facets/integer/odd.rb
lib/core/facets/integer/of.rb
lib/core/facets/integer/multiple.rb
lib/core/facets/integer/factorial.rb
lib/core/facets/bitmask.rb
lib/core/facets/numeric/round.rb
Parent: Object

Calculate the number of digits in an integer.

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

CREDIT: Victor H. Goff III

Methods

bit   bit!   bit?   bitmask   bitmask!   bitmask?   clear_bit   even?   fac   factorial   length   multiple?   odd?   of   ordinal   ordinalize   round_at   round_to   times_collect   times_map  

Public Instance methods

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

[Source]

    # File lib/core/facets/bitmask.rb, line 14
14:   def bit(bit)
15:     if bit < 0
16:       mask = (1 << ~bit)
17:       self & ~mask
18:     else
19:       mask = (1 << bit)
20:       self | mask
21:     end
22:   end
bit!(bit)

Alias for bit

Is a bit set?

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

CREDIT: Thomas Sawyer, George Moschovitis

[Source]

    # File lib/core/facets/bitmask.rb, line 43
43:   def bit?(bit)
44:     mask = (1 << bit)
45:     (self & mask) != 0
46:   end

Apply a bitmask.

  1.bitmask(6) #=> 7

Using a inverted bitmask clears bits.

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

CREDIT: George Moschovitis

[Source]

    # File lib/core/facets/bitmask.rb, line 59
59:   def bitmask(mask)
60:     if mask < 0
61:       self & mask
62:     else
63:       self | mask
64:     end
65:   end
bitmask!(mask)

Alias for bitmask

Is bitmask set?

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

CREDIT: George Moschovitis

[Source]

    # File lib/core/facets/bitmask.rb, line 78
78:   def bitmask?(mask)
79:     (self & mask) != 0
80:   end

Clear bit.

CREDIT: George Moschovitis

[Source]

    # File lib/core/facets/bitmask.rb, line 31
31:   def clear_bit(bit)
32:     mask = (1 << bit)
33:     self & ~mask
34:   end

Returns true if this integer is even, false otherwise.

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

CREDIT: Daniel Schierbeck

[Source]

    # File lib/core/facets/integer/odd.rb, line 31
31:     def even?
32:       #self % 2 == 0
33:       self & 1 == 0
34:     end
fac()

Alias for factorial

Calculate the factorial of an integer.

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

CREDIT: Malte Milatz

[Source]

    # File lib/core/facets/integer/factorial.rb, line 11
11:   def factorial
12:     return 1 if zero?
13:     f = 1
14:     2.upto(self) { |n| f *= n }
15:     f
16:   end

Returns the length of an integer as an integer.

[Source]

    # File lib/core/facets/integer/length.rb, line 12
12:   def length
13:     to_s.length
14:   end

Is is a multiple of a given number?

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

CREDIT: Trans

[Source]

    # File lib/core/facets/integer/multiple.rb, line 10
10:   def multiple?(number)
11:     self % number == 0
12:   end

Returns true if this integer is odd, false otherwise.

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

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

CREDIT: Daniel Schierbeck

[Source]

    # File lib/core/facets/integer/odd.rb, line 15
15:     def odd?
16:       #self % 2 == 1
17:       self & 1 == 1
18:     end

Like times but returns a collection of the yield results.

  a = 3.of { |i| "#{i+1}" }
  a => [ "1", "2", "3" ]

[Source]

    # File lib/core/facets/integer/of.rb, line 9
 9:   def of(&block)
10:     Array.new(self, &block)
11:   end

[Source]

    # File lib/core/facets/integer/ordinal.rb, line 3
 3:   def ordinal
 4:     if [11,12,13].include?(self % 100)
 5:       "#{self}th"
 6:     else
 7:       case (self % 10)
 8:       when 1
 9:         "#{self}st"
10:       when 2
11:         "#{self}nd"
12:       when 3
13:         "#{self}rd"
14:       else
15:         "#{self}th"
16:       end
17:     end
18:   end
ordinalize()

Alias for ordinal

See Float#round_at.

[Source]

    # File lib/core/facets/numeric/round.rb, line 27
27:   def round_at(*args)
28:     to_f.round_at(*args)
29:   end

See Float#round_to.

[Source]

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

Alias for of

times_map(&block)

Alias for of

[Validate]