[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

DATA.readlines in an inner file

Bill Guindon

3/23/2006 4:19:00 PM

Is there any way to use DATA.readlines to read the data (below
__END__) in a file that's been required/included? I want the read
code to be inside the included/required file.

--
Bill Guindon (aka aGorilla)
The best answer to most questions is "it depends".


2 Answers

Ara.T.Howard

3/23/2006 5:05:00 PM

0

Bill Guindon

3/23/2006 8:06:00 PM

0

On 3/23/06, ara.t.howard@noaa.gov <ara.t.howard@noaa.gov> wrote:
> On Fri, 24 Mar 2006, Bill Guindon wrote:
>
> > Is there any way to use DATA.readlines to read the data (below
> > __END__) in a file that's been required/included? I want the read
> > code to be inside the included/required file.
> >
> > --
> > Bill Guindon (aka aGorilla)
> > The best answer to most questions is "it depends".
> >
> >
>
> i don't think one can do it directly, but:
>

Thanks much, was hoping there was a more elegant solution. I was just
going to use it to avoid a 'here doc' block. Now, the 'here doc'
doesn't look so bad ;)

> harp:~ > cat b.rb
> require 'dynaload'
>
> module M
> def your_code_here_as_normal
> end
> end
>
>
> #
> # add this to the end of the file
> #
> data = open(__FILE__)
> data.each{|line| break if line =~ /^__END__$/}
> Dynaload::export data, "name" => "DATA"
>
> __END__
> 42
>
>
>
> harp:~ > cat a.rb
> require 'dynaload'
>
> loaded = Dynaload::dynaload "b.rb"
>
> obj, desc = loaded.objects.select{|obj, desc| desc['name'] == 'DATA'}.first
>
> puts obj.read
>
>
>
> harp:~ > ruby a.rb
> 42
>
> regards.
>
> -a
> --
> share your knowledge. it's a way to achieve immortality.
> - h.h. the 14th dali lama
>
>


--
Bill Guindon (aka aGorilla)
The best answer to most questions is "it depends".