How can I get this backslash-eliminating behavior when reading afile?

P

Phil Tomson

I'm trying to write a parser for a file format that allows backslashes
'\' at the end of lines. The format I'm trying to parse treats
backslashes at the end of lines just like the Ruby parser would treat
them if they occured in a ruby source file.

The double quotes string constructor does what I want it to in this case:

irb(main):006:0> str = "line1 \
irb(main):007:0" still more line1 \
irb(main):008:0" even more line1"
=> "line1 still more line1 even more line1" <- this is exactly what I want


However, if I read a string in from a file, I don't get what I want:
$ cat testfile
line 1 \
still on line 1\
even more line 1

irb(main):001:0> str = File.read("testfile")
=> "line 1 \\\nstill on line 1\\\neven more line 1\n"

I'd prefer not to even know about the backslashes or '\n's, so I'd
rather have the behavior that the double quotes string constructor
gives me:
=> "line1 still more line1 even more line1"

Is there any way to get this behavior when reading a file into a string?

Phil
 
P

Phil Tomson

I'm trying to write a parser for a file format that allows backslashes
'\' at the end of lines. The format I'm trying to parse treats
backslashes at the end of lines just like the Ruby parser would treat
them if they occured in a ruby source file.

The double quotes string constructor does what I want it to in this case:

irb(main):006:0> str = "line1 \
irb(main):007:0" still more line1 \
irb(main):008:0" even more line1"
=> "line1 still more line1 even more line1" <- this is exactly what I want


However, if I read a string in from a file, I don't get what I want:
$ cat testfile
line 1 \
still on line 1\
even more line 1

irb(main):001:0> str = File.read("testfile")
=> "line 1 \\\nstill on line 1\\\neven more line 1\n"

I'd prefer not to even know about the backslashes or '\n's, so I'd
rather have the behavior that the double quotes string constructor
gives me:
=> "line1 still more line1 even more line1"

Is there any way to get this behavior when reading a file into a string?

Phil

ah, of course, I could just to this:
str = File.read("testfile").gsub(/\\\n/,'')

That does what I asked for... now I realize that I probably don't want
to do this since the line numbering will be all off when reporting
errors...

Phil
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top