Forum: Ruby File.write a long line

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
68814ed988eee4f21b2cd07353e5e445?d=identicon&s=25 Mk 27 (mk27)
on 2009-05-16 21:36
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.
E0d864d9677f3c1482a20152b7cac0e2?d=identicon&s=25 Robert Klemme (Guest)
on 2009-05-16 23:01
(Received via mailing list)
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
C06869c119472a139eb163b72040b0db?d=identicon&s=25 Bertram Scharpf (Guest)
on 2009-05-17 14:55
(Received via mailing list)
Hi,

Am Sonntag, 17. Mai 2009, 06:00:04 +0900 schrieb Robert Klemme:
> 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
68814ed988eee4f21b2cd07353e5e445?d=identicon&s=25 Mk 27 (mk27)
on 2009-05-17 19:56
Bertram Scharpf 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.
E0d864d9677f3c1482a20152b7cac0e2?d=identicon&s=25 Robert Klemme (Guest)
on 2009-05-18 08:36
(Received via mailing list)
2009/5/17 Mk 27 <halfcountplus@intergate.com>:
> Bertram Scharpf 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
This topic is locked and can not be replied to.