In article <0G6G00BZI07VGI / mta6.snfc21.pbi.net>,
Kevin Smith  <sent / qualitycode.com> wrote:
>jmichel / schur.institut.math.jussieu.fr wrote:
>
>> On another topic, is there a way in ruby to have a string behave as a file
>> (something like the 'istringstrem' class of C++ ?)
>
>There was a discussion of this a few weeks ago. 
>Since Ruby is dynamically typed, Strings and 
>Files can behave the same (and thus be 
>interchangable) even if they do not inherit from 
>each other.
>
>For eample:
>
>  stream.each_line do
>	| line |
>	puts ">" + line
>  end
>
>This will work whether stream is a File or a 
>String. If there are other operations that you 
>would like String to support (like lineno or 
>seek) you would just have to create a subclass of 
>String that implements those methods.

I do not think this solves my  problem. I will give the specific example
where I  had the problem  to show  it: I have  as an exercise  written a
program to  get an ID3V2 tag  from a .mp3  file. I have defined  a class
ID3V2tag and  a method  read_ID3V2tag in  class IO  which returns  a new
object of class ID3V2tag (or nil if no such tag was found in the file).

 Now, I want to re-use my code to parse an ID3V3 tag sitting in a string
in memory. In C++, I can just  make the string into an istringstream and
share the same code.  I don't see how I can share  the code between both
situations in  ruby (of  course there would  be a way:  put the  code in
class String and read the file in memory; but this is not desirable with
multi-megabyte  files!). It  seems that  I need  a class  in which  both
strings and  files can belong, but  I cannot do it  since neither String
nor IO is a module. What did I miss here?

  Best regards,
     Jean MICHEL