[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

requiring the same file and capturing the constants

Raj Singh

5/13/2008 4:20:00 PM

file1.txt
-----------------
class Person
end
module Speak
end


The task is to printout all the constants listed in the file. In this
case there are Person and Speak.

I need to handle two cases.
1) The system loads the file for the first time. I guess in this case I
can use ObjectSpace.each_object or ObjectSpace.some_method from API to
get before and after picture. Subtract the before picture and I will get
the constants.

2) The second case is when file1.txt is already loaded into the
application. So in this case I can't do before and after thing. How can
I get constants in this case without before and after picture.

Thanks
--
Posted via http://www.ruby-....

1 Answer

Joel VanderWerf

5/13/2008 4:54:00 PM

0

Raj Singh wrote:
> file1.txt
> -----------------
> class Person
> end
> module Speak
> end
>
>
> The task is to printout all the constants listed in the file. In this
> case there are Person and Speak.
>
> I need to handle two cases.
> 1) The system loads the file for the first time. I guess in this case I
> can use ObjectSpace.each_object or ObjectSpace.some_method from API to
> get before and after picture. Subtract the before picture and I will get
> the constants.
>
> 2) The second case is when file1.txt is already loaded into the
> application. So in this case I can't do before and after thing. How can
> I get constants in this case without before and after picture.
>
> Thanks

If you have control over *how* the file is loaded, you can do this,
using http://redshift.sourceforge....:

[~/tmp] cat file.rb
class Person
end
module Speak
end
[~/tmp] cat main.rb
require 'script'
mod = Script.load 'file.rb'
p mod.constants
[~/tmp] ruby main.rb
["Person", "Speak"]

The trick is really just reading the file, creating a module, and
calling module_eval on that with the contents of the file.

--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407