[#109207] [Ruby master Feature#18915] New error class: NotImplementedYetError or scope change for NotImplementedYet — Quintasan <noreply@...>
Issue #18915 has been reported by Quintasan (Michał Zając).
18 messages
2022/07/14
[ruby-core:109129] [Ruby master Feature#17753] Add Module#namespace
From:
"ioquatix (Samuel Williams)" <noreply@...>
Date:
2022-07-03 23:41:53 UTC
List:
ruby-core #109129
Issue #17753 has been updated by ioquatix (Samuel Williams).
@sawa Thanks for your feedback and the improved code.
Based on my own needs and other code (see <https://apidock.com/rails/ActiveSupport/Inflector/demodulize> and <https://apidock.com/rails/ActiveSupport/Inflector/deconstantize> for example) I see two main use cases:
(1) Get some part of the namespace starting from the left.
(2) Get some part of the class name starting from the right.
To me it's consistent within the requirements of solving those two problems and maps nicely to negative and non-negative integers respectively.
I realise that between the negative and non-negative offset, there is no continuity but this is by design to satisfy user needs rather than theoretical purity. If you have a better idea, please share it!
----------------------------------------
Feature #17753: Add Module#namespace
https://bugs.ruby-lang.org/issues/17753#change-98270
* Author: tenderlovemaking (Aaron Patterson)
* Status: Open
* Priority: Normal
----------------------------------------
Given code like this:
```ruby
module A
module B
class C; end
class D; end
end
end
```
We can get from `C` to `B` like `C.outer_scope`, or to `A` like
`C.outer_scope.outer_scope`.
I want to use this in cases where I don't know the outer scope, but I
want to find constants that are "siblings" of a constant. For example,
I can do `A::B::C.outer_scope.constants` to find the list of "sibling"
constants to `C`. I want to use this feature when walking objects and
introspecting. For example:
```ruby
ObjectSpace.each_object(Class) do |k|
p siblings: k.outer_scope.constants
end
```
I've attached a patch that implements this feature, and there is a pull request on GitHub [here](https://github.com/ruby/ruby/pull/4326).
---Files--------------------------------
0001-Add-Module-outer_scope.patch (5.93 KB)
0001-Add-Module-namespace.patch (5.89 KB)
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>