~michaelforrest/use-case-mapper/trunk

« back to all changes in this revision

Viewing changes to vendor/rails/activesupport/lib/active_support/core_ext/module/inclusion.rb

  • Committer: Richard Lee (Canonical)
  • Date: 2010-10-15 15:17:58 UTC
  • mfrom: (190.1.3 use-case-mapper)
  • Revision ID: richard.lee@canonical.com-20101015151758-wcvmfxrexsongf9d
Merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
class Module
2
 
  # Returns the classes in the current ObjectSpace where this module has been
3
 
  # mixed in according to Module#included_modules.
4
 
  #
5
 
  #   module M
6
 
  #   end
7
 
  #   
8
 
  #   module N
9
 
  #     include M
10
 
  #   end
11
 
  #   
12
 
  #   class C
13
 
  #     include M
14
 
  #   end
15
 
  #   
16
 
  #   class D < C
17
 
  #   end
18
 
  #
19
 
  #   p M.included_in_classes # => [C, D]
20
 
  #
21
 
  def included_in_classes
22
 
    classes = []
23
 
    ObjectSpace.each_object(Class) { |k| classes << k if k.included_modules.include?(self) }
24
 
 
25
 
    classes.reverse.inject([]) do |unique_classes, klass| 
26
 
      unique_classes << klass unless unique_classes.collect { |k| k.to_s }.include?(klass.to_s)
27
 
      unique_classes
28
 
    end
29
 
  end
30
 
end
 
 
b'\\ No newline at end of file'