Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > external Module.nesting

Reply
Thread Tools

external Module.nesting

 
 
Daniel Brumbaugh Keeney
Guest
Posts: n/a
 
      01-18-2008
Is there an obvious method for a module like
A::B::C
that would result in A::B?

Module.nesting came to mind, but no I didn't see an obvious way to make it work.

Daniel Brumbaugh Keeney

 
Reply With Quote
 
 
 
 
Xavier Noria
Guest
Posts: n/a
 
      01-19-2008
On Jan 19, 2008, at 12:29 AM, Daniel Brumbaugh Keeney wrote:

> Is there an obvious method for a module like
> A::B::C
> that would result in A::B?


What do you mean?

You know, modules are objects, constants are stored in modules. Given
those rules you can put a module almost anywhere. AFAICT what you
cannot change via API is its name, which is set in stone the first
time a module is assigned to a constant. That happens in regular
module definitions, or explicitly like this:

$ irb
irb(main):001:0> m = Module.new
=> #<Module:0x20eb6c>
irb(main):002:0> m.name
=> ""
irb(main):003:0> M = m
=> M
irb(main):004:0> m.name
=> "M"
irb(main):005:0> N = M
=> M
irb(main):006:0> N.name
=> "M"

-- fxn


 
Reply With Quote
 
 
 
 
Xavier Noria
Guest
Posts: n/a
 
      01-19-2008
On Jan 19, 2008, at 1:07 AM, Xavier Noria wrote:

> On Jan 19, 2008, at 12:29 AM, Daniel Brumbaugh Keeney wrote:
>
>> Is there an obvious method for a module like
>> A::B::C
>> that would result in A::B?

>
> What do you mean?


Oh, perhaps you just want something like Module#parent provided by
Active Support. There the parent is computed by hand from the module
name:

def parent
parent_name = name.split('::')[0..-2] * '::'
parent_name.empty? ? Object : parent_name.constantize
end

where String#constantize is

def constantize(camel_cased_word)
unless /\A(?::?([A-Z]\w*(?:::[A-Z]\w*)*)\z/ =~ camel_cased_word
raise NameError, "#{camel_cased_word.inspect} is not a valid
constant name!"
end

Object.module_eval("::#{$1}", __FILE__, __LINE__)
end

-- fxn


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Create references to external scipt files from within an external script file Mellow Crow Javascript 6 11-04-2005 01:16 PM
Tt Tribe External Water Cooler Kit Review Silverstrand Front Page News 0 09-23-2005 11:37 AM
Samsung WriteMaster SE-W164 16x16x External DVD Writer Revie Silverstrand Front Page News 0 08-30-2005 06:06 PM
Icy Box launches 1.8 & 2.5 alloy external enclosure m1k30rz Front Page News 0 06-21-2005 11:35 AM
unresolved external symbol/using an external dll Scott Allen C++ 8 05-02-2004 06:11 PM



Advertisments