Module: ActiveObject::Integer

Defined in:
lib/active_object/integer.rb

Instance Method Summary collapse

Instance Method Details

#factorialObject


21
22
23
24
25
# File 'lib/active_object/integer.rb', line 21

def factorial
  return 1 if zero?

  2.upto(self).inject(1) { |acc, elem| acc * elem }
end

#factorsObject


27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/active_object/integer.rb', line 27

def factors
  limit = Math.sqrt(self).floor

  (1..limit).each_with_object([]) do |i, acc|
    next unless (self % i).zero?

    acc.push(i)

    sq_num = (self / i)
    acc.push(sq_num) if sq_num != i
  end
end

#of(&block) ⇒ Object


40
41
42
# File 'lib/active_object/integer.rb', line 40

def of(&block)
  ::Array.new(self, &block)
end

#romanObject


44
45
46
47
48
49
# File 'lib/active_object/integer.rb', line 44

def roman
  return '' if zero?
  return "-#{(-self).roman}" if negative?

  ROMAN_VALUES.each { |key, val| return "#{key}#{(self - val).roman}" if val <= self }
end

#timeObject


51
52
53
# File 'lib/active_object/integer.rb', line 51

def time
  ::Time.at(self)
end