File.write a long line


#1

I notice you can do this with print:

print “blah blah”,
“and so on”

but not with File.write, except

file.write “blah blah /
and so on”

which is no good cause it includes all the whitespace. I guess I can
live with

file.write “blah blah”
file.write “and so on”

but I thot I’d check and see if there is not some wierd combination of +
, / etc that would allow me to break the line, as I imagine the same
logic will apply in other ruby methods.

Thanks in advance! Ruby seems very nice, I am happy.


#2

On 16.05.2009 21:36, Mk 27 wrote:

which is no good cause it includes all the whitespace. I guess I can
live with

file.write “blah blah”
file.write “and so on”

but I thot I’d check and see if there is not some wierd combination of +
, / etc that would allow me to break the line, as I imagine the same
logic will apply in other ruby methods.

You can do

file.write "blah blah " +
“and so on”

file.write "blah blah "
“and so on”

I myself use these rules of thumb to decide which method to use:

  1. printing of text: puts, print, printf
  2. output of binary or chunked data: write

E.g. for copying data from one file to another, I’d do

buffer = “”
while io1.read(1024, buffer)
io2.write buffer
end

Thanks in advance! Ruby seems very nice, I am happy.

Good!

Kind regards

robert


#3

Hi,

Am Sonntag, 17. Mai 2009, 06:00:04 +0900 schrieb Robert K.:

On 16.05.2009 21:36, Mk 27 wrote:

file.write “blah blah /
and so on”
which is no good cause it includes all the whitespace.

file.write "blah blah " +
“and so on”
file.write "blah blah "
“and so on”

Maybe here documents?

file.write <<EOT.chomp
blah blah
and so on
EOT

Bertram


#4

2009/5/17 Mk 27 removed_email_address@domain.invalid:

Bertram S. wrote:

Maybe here documents?

No, just to save a little bit of typing a line with a bunch of long
object.hash[key] variables in it. But since the logic must applies to
other methods, I figured I might as well start “saving” now.

Anyway, it seems the + version works but the / ignores the next line if
the quotes are closed.

Note that for the continuation you need a bachslash “” and not a
forward slash “/”! The difference between the two variants is that
the continuation forms one long string while the plus version creates
several strings which are combined at runtime. It seems that in your
case the version with “+” may be better as you seem to pull your
strings from somewhere else (i.e. they are not constant). Can you
show the real code?

Cheers

robert


#5

Bertram S. wrote:

Maybe here documents?

No, just to save a little bit of typing a line with a bunch of long
object.hash[key] variables in it. But since the logic must applies to
other methods, I figured I might as well start “saving” now.

Anyway, it seems the + version works but the / ignores the next line if
the quotes are closed.