咳といいます。 > trimの処理は物理行か、対応する<%〜%>で完結したほうが判りやすいです。 > [ruby-list:37896]の例のように<%と%>が対応していなくて、 > しかも行が違うとなると改行が出力されない原因を調べるのが大変です。 これはバグです。 %>ではじまって%>で終わるのも削除してました。えへへ。 >> 現在のところ、"<%", "<%=", "<%#"ではじまって"%>"で終わる時の改行を >> 削除しようと思っています。 > > これは対応する<%〜%>でtrimするということですよね? > > 例1のような複数行の<%〜%>はtrimして、例2ではtrimしないということでよいですか? > > 例1 > <% > title = cgi['title'][0] > body = cgi['body'][0] > %> > > 例2 > <% ... %>foo<% ... %> すみません。違います。 物理行に意味があります。 「行頭が"<%", "<%=", "<%#"ではじまって"%>"で終わる一行」の改行を削除です。 この例では例2だけ削除です。 >> CVS版(roughの方)はエスケープの挙動をerubyにそろえたつもりです。 >> もうちょっといろいろ試してみます。 > > ERbLightとの互換性が無くなりますね。 > tDiaryでは2段階でERbLightを適用する為、'<%%=footer_proc%%>'という記述を > していますが、ERBを使用する場合は'<%%=footer_proc%>'と書かなければいけない。 > > まぁtDiaryはERbLightを同梱してるから実害はなさそうですが。 互換性が無くなりますね。 どっちがいいんでしょうねえ。> たださん、みなさま なんとなくERbLightの仕様の方は、 字面で追う人はびっくりしないかもしれないけど、 スクリプトとして追う人はびっくりしそうですね(???)。 2段階でERbLightを適用するのを人が書くとすると'<%%=footer_proc%%>'って わかりやすい印象があります。 > <%〜%>の中に行コメント(#)を書くと同じ行にあるテキストや<%〜%>まで影響を受けてしまいます。 > > $ erb -x > <% # %> foo <%="bar"%> > ^D > _erbout = ''; # ; _erbout.concat " foo "; > _erbout.concat(("bar").to_s); _erbout > .concat "\n" > _erbout; > > erubyも同じように行コメントの影響を受けるようです。 > > $ ruby -r eruby -e'puts ERuby::Compiler.new.compile_file(STDIN)' > <% # %> foo <%="bar"%> > ^D > # ; print " foo "; print(("bar")); print "\n" > > これは実装の都合でしょうか? それとも仕様? 両方です。実装に都合のいい仕様じゃないかなあ。 そのために<%# ... %>があるんだと思います。 だめかしら。