新井です。

>>> From: Koji Arai <JCA02266 / nifty.ne.jp>
>>> Date: 21 Feb 1999 00:47:34 +0900
>>> Subject: [ruby-dev:5412] Re: #{\n}\\ in heredoc

> 新井です。

> 1.3.1-990215 を元に 1.2.3用のパッチを作ってみました(あってますか?)。

ダメでした。

以下のスクリプトがうまくいかない。

print <<END
	a\\
#{
}\\
	b\\
	c\\
END

以下の修正でどうでしょ?
(1.2.3へのパッチです)

# いつも、メールを送る前にhookでTABを消してたんですが
# マズかったですね。今回TAB付き。


--- parse.y.orig Tue Feb 9 12:29:23 1999 +++ parse.y Sun Feb 21 06:09:50 1999 @@ -2229,14 +2229,15 @@ return 0; } sourceline++; - if (strncmp(eos, RSTRING(line)->ptr, len) == 0 && - (RSTRING(line)->ptr[len] == '\n' || - RSTRING(line)->ptr[len] == '\r')) { - break; - } lex_pbeg = lex_p = RSTRING(line)->ptr; lex_pend = lex_p + RSTRING(line)->len; + retry: + if (strncmp(eos, lex_p, len) == 0 && + (lex_p[len] == '\n' || lex_p[len] == '\r')) { + break; + } + switch (parse_string(term, '\n', '\n')) { case tSTRING: case tXSTRING: @@ -2260,6 +2261,9 @@ case 0: goto error; + } + if (lex_p != lex_pend) { + goto retry; } } free(eos);