Rubyで複数行コメント
残念ながらRubyには複数行コメントがありません。いや、RDコメントはあるけど、RDとして抽出することを期待してないときもあるし、っていうか期待してないことのほうが多いし。行の途中でも使いたいし。
と言うことで試しにやってみました。#{...} が複数行コメントです。ただしこのコメント内では "}" は使えません。ただの手抜きです。すいません。
*** parse.y.1.9.3-p0 2011-12-06 23:25:14.000000000 +0900 --- parse.y 2011-12-06 23:22:38.000000000 +0900 *************** *** 6695,6700 **** --- 6695,6711 ---- set_file_encoding(parser, lex_p, lex_pend); } } + c = nextc(); + if (c == '{') { + for (;;) { + c = nextc(); + if (c == -1) return -1; + if (c == '}') { + goto retry; + } + } + } + pushback(c); lex_p = lex_pend; #ifdef RIPPER ripper_dispatch_scan_event(parser, tCOMMENT);
なんでこんなことやったかというと先日のOptionally Typed風コメントを実際にやってみたかったから。以下なんとなく型付けてるふり。
def foo(bar#{to_s})#{String} ret#{String} = "Hello, #{bar.to_s}" ret end puts foo("multiline comment")
$ ./ruby multiline_comment.rb Hello, multiline comment $
ん、なんかそれっぽい気がする。
コメント内で "}" が使えないのはあんまりだけど、それはそれとしてやっぱRubyにも複数行コメント欲しいなぁ。
クリスマス用にって思ったんだけど、やってみると簡単すぎたので放出。昨日のエントリの「無視される要素の追加」の2つ目、parser_yylexの方すね。