File: base_class_identifier.rb

package info (click to toggle)
ruby-bogus 0.1.5-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 828 kB
  • ctags: 628
  • sloc: ruby: 4,124; makefile: 6; sh: 2
file content (39 lines) | stat: -rw-r--r-- 724 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
module Bogus
  class BaseClassIdentifier
    extend Takes
    takes :copied_class, :klass

    def self.base_class?(copied_class, klass)
      new(copied_class, klass).base_class?
    end

    def base_class?
      same? || included_module? || subclass?
    end

    private

    def same?
      klass == copied_class
    end

    def included_module?
      copied_class.included_modules.include?(klass)
    end

    def subclass?
      superclasses.include?(klass)
    end

    def superclasses
      return [] unless copied_class.is_a?(Class)
      klass = copied_class
      superclasses = []
      while klass
        superclasses << klass
        klass = klass.superclass
      end
      superclasses
    end
  end
end