前田です。 At Mon, 6 Dec 1999 21:29:59 +0900, TAKEUCHi Kahori (竹内かほり) <take-k / secom-sis.co.jp> wrote: > eruby.diff 置きなおしました。って、うちでこうやって置いとい > ていいんでしょうか。前田さんに迷惑かけてる気がしますが…。 いえいえ。 > となっていました。% がいっこ足りなくて、SyntaxError になるハ > ズです。Just の前の % を意味もなくががーっと増やしてみても、 > つねに上のようになります。% はいっぱい続けても1つの % になっ > てしまうみたい? どう書けばいいですか? すみません、バグでした。 パッチを付けます。 このパッチだと、 ['わたなべ氏', 'print eval %<%%Just another Ruby hacker,%%>'] と書けばよいはずです。 Rubyスクリプトに変換した時に、 ['わたなべ氏', 'print eval %<%%Just another Ruby hacker,%>'] となるのですが、最初の'<%%'が'<%'にならないのは<%,%>はネストしな いので<%,%>内の<%はそのまま通るからです。 それとも<%,%>内の<%はエラーにした方がよいですかね。 -- 前田 修吾
--- eruby.c.orig Tue Dec 7 11:28:07 1999 +++ eruby.c Tue Dec 7 11:37:43 1999 @@ -37,10 +37,14 @@ c = getc(in); again: if (c == eruby_end_delimiter[0]) { - if (prevc == eruby_end_delimiter[0]) - continue; c = getc(in); if (c == eruby_end_delimiter[1]) { + if (prevc == eruby_end_delimiter[0]) { + if (type != EMBEDDED_COMMENT) + putc(eruby_end_delimiter[1], out); + prevc = eruby_end_delimiter[1]; + continue; + } if (type == EMBEDDED_EXPR) fputs(")); ", out); else if (type == EMBEDDED_STMT && prevc != '\n') @@ -141,8 +145,7 @@ } else if (c == eruby_begin_delimiter[1]) { /* <%% => <% */ if (prevc < 0) fputs("print \"", out); - putc(eruby_begin_delimiter[0], out); - putc(eruby_begin_delimiter[1], out); + fwrite(eruby_begin_delimiter, 1, 2, out); prevc = eruby_begin_delimiter[1]; continue; }