My question is how can you construct a "heredoc array" ( or hash).
Let me start with is code:
a = [
1,
2
]
it is perfect ruby syntax.
but if you put the ',' on next line like:
a = [
1
···
,
2
]
then you got syntax error.
It seems stupid to put ',' on next line but I have no choice,
here is my use case with heredoc example:
a = [
<<EOD1
abc
very very long string and many many lines ...
EOD1
,
<<EOD2
123
very very long string and many many lines ...
EOD2
]
I cannot put the ',' just after EOD1, it must to the next line,
if not, the "EOD1," is not consider termination of heredoc.
but put the ',' on next line then I got syntax error ...
Depending on what the test is, a %Q{ } pair might work better. You
will have to escape any '}'.
a = [
%Q{\
Multi line
white space is kept.
My here doc clone "can have quotes" 'of' any kind.},
%Q{\
just remember to use a \} to close
your text}
]
Personally, I don't care for heredoc format so i don't use it often.
Brian.
···
On Thu, 17 Mar 2005 07:19:41 +0900, David Tran <email55555@gmail.com> wrote:
My question is how can you construct a "heredoc array" ( or hash).
Let me start with is code:
a = [
1,
2
]
it is perfect ruby syntax.
but if you put the ',' on next line like:
a = [
1
,
2
]
then you got syntax error.
It seems stupid to put ',' on next line but I have no choice,
here is my use case with heredoc example:
a = [
<<EOD1
abc
very very long string and many many lines ...
EOD1
,
<<EOD2
123
very very long string and many many lines ...
EOD2
]
I cannot put the ',' just after EOD1, it must to the next line,
if not, the "EOD1," is not consider termination of heredoc.
but put the ',' on next line then I got syntax error ...
It may be more readable to put the expression on one line with all the
heredocs stacked beneath:
a = [<<EOD1, <<EOD2]
abc
very very long string and many many lines ...
EOD1
123
very very long string and many many lines ...
EOD2
···
On Thu, 17 Mar 2005, David Tran wrote:
It seems stupid to put ',' on next line but I have no choice,
here is my use case with heredoc example:
a = [
<<EOD1
abc
very very long string and many many lines ...
EOD1
,
<<EOD2
123
very very long string and many many lines ...
EOD2
]
I cannot put the ',' just after EOD1, it must to the next line,
if not, the "EOD1," is not consider termination of heredoc.
but put the ',' on next line then I got syntax error ...
"Relm" <relm@3tlk.net> schrieb im Newsbeitrag
news:Pine.LNX.4.21.0503170235060.3371-100000@frieza...
> It seems stupid to put ',' on next line but I have no choice,
> here is my use case with heredoc example:
> a = [
> <<EOD1
> abc
> very very long string and many many lines ...
> EOD1
> ,
> <<EOD2
> 123
> very very long string and many many lines ...
> EOD2
> ]
>
> I cannot put the ',' just after EOD1, it must to the next line,
> if not, the "EOD1," is not consider termination of heredoc.
> but put the ',' on next line then I got syntax error ...
It may be more readable to put the expression on one line with all the
heredocs stacked beneath:
a = [<<EOD1, <<EOD2]
abc
very very long string and many many lines ...
EOD1
123
very very long string and many many lines ...
EOD2
This works also:
a = [
<<EOD1,
abc
very very long string and many many lines ...
EOD1
<<EOD2,
123
very very long string and many many lines ...
EOD2
]
Note: "<<EOD1" is the expression that is replaced by the string, hence the
"," directly after it.
I find that type of code gives me rather intense feelings of disgust and loathing.
I found such an example in mkmf.rb and it was quite confusing to me, because the first here-doc terminators were nearly indistinguishable from the rest of the contents of the file.
The biggest problem with beginning multiple here-docs on a single line is that you can have no whitespace between the end of the first and the beginning of the second unless that whitespace is supposed to be in the here-docs.