Project

General

Profile

Feature #8026

Need Module#prepended_modules

Added by marcandre (Marc-Andre Lafortune) almost 7 years ago. Updated almost 2 years ago.

Status:
Feedback
Priority:
Normal
Target version:
-
[ruby-core:53159]

Description

We should have a way to get the list of prepended modules of a class or module.

module Mixin
end

module Outer
  prepend Mixin
end

Mixin.prepended_modules   #=> []
Outer.prepended_modules   #=> [Mixin]

See also bug #8025.


Files

prepended.pdf (99.4 KB) prepended.pdf marcandre (Marc-Andre Lafortune), 08/31/2013 08:29 AM

Related issues

Related to Ruby master - Bug #8841: Module#included_modules and prepended modulesOpenActions
Has duplicate Ruby master - Feature #11879: `Module#prepended_modules`OpenActions

History

Updated by matz (Yukihiro Matsumoto) over 6 years ago

I am OK with the idea.

Matz.

Updated by knu (Akinori MUSHA) over 6 years ago

What about adding Module#prepend?(other) also, which could be implemented in ruby as follows?

module Module
def prepend?(other)
ancestors.find { |mod|
break false if mod == self
mod == other
}
end
end

Updated by marcandre (Marc-Andre Lafortune) over 6 years ago

Slide added. I'm also proposing an optional flag to search only the receiver and not the ancestors.

I didn't put in prepend? but it should also be added. On the other hand, Array.prepend?(Enumerable) should return false, no?

Updated by matz (Yukihiro Matsumoto) over 6 years ago

  • Status changed from Open to Feedback

I basically accept the idea.

But according to the slide, the optional include_ancestors is true, but it does mean cherry-picking prepended modules from ancestor list. I cannot think of any use case of this behavior.

Matz.

Updated by hsbt (Hiroshi SHIBATA) almost 6 years ago

  • Target version changed from 2.1.0 to 2.2.0
#6

Updated by nobu (Nobuyoshi Nakada) almost 4 years ago

#7

Updated by naruse (Yui NARUSE) almost 2 years ago

  • Target version deleted (2.2.0)

Also available in: Atom PDF