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
Alias for bit
[ + ]
# File lib/core/facets/bitmask.rb, line 43 def bit?(bit) mask = (1 << bit) (self & mask) != 0 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
[ + ]
# File lib/core/facets/bitmask.rb, line 59 def bitmask(mask) if mask < 0 self & mask else self | mask end end
Alias for bitmask
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.
CREDIT: George Moschovitis
[ + ]
# File lib/core/facets/bitmask.rb, line 31 def clear_bit(bit) mask = (1 << bit) self & ~mask end
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 27 def even? #self % 2 == 0 self & 1 == 0 end
Alias for factorial
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
[ + ]
# File lib/core/facets/integer/multiple.rb, line 10 def multiple?(number) self % number == 0 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
[ + ]
# File lib/core/facets/integer/odd.rb, line 15 def odd? #self % 2 == 1 self & 1 == 1 end
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
[ + ]
# 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
Alias for ordinal
See Float#round_at.
[ + ]
# File lib/core/facets/numeric/round.rb, line 27 def round_at(*args) to_f.round_at(*args) end
See Float#round_to.
[ + ]
# File lib/core/facets/numeric/round.rb, line 33 def round_to(*args) to_f.round_to(*args) end
Alias for of
Alias for of