|
「コメント/文字定数のカラー表示」の「 Perl 」を使わずに、
breglf(bregexp)を使って、Rubyのコメント/文字定数の表示の試み。
cf 会議室2,発言04492,日付99/11/22,発言者 綾乃介,題名 Perl/Rubyのコメント判定
環境 Win95B, 秀丸v3.05, breglf v0.0.0.1, bregexp v2.0.4.29
(A)直接のきっかけ。
「コメント/文字定数のカラー表示」の Perl で。
(1) # から行末までコメント表示になることが不満。
/#{var}/ =~ "string"
ret = str.gsub(/#{var}/i, 'bar')
print <<"EOD"
#{RUBY_VERSION}
#{__FILE__}
EOD
(2)対応関係の無い ' や " 以下が文字定数として強調表示されることも不満。
/here's/ =~ "string"
hoge = $' #postmatch
(B)ruby.hilight
// コメント/文字定数のカラー表示は OFF にして使う。
// 欠点は、コードの末尾にあるコメントを強調できない事。
//
// 強調表示4、正規表現。
209,%r!(?:[^!\\]|\\.)*![iomxnesu]*
209,\x2f[^\x2f\\]*(?:\\.[^\x2f\\]*)*\x2f[iomxnesu]*
// 行の強調表示1、メソッド定義。
21,^ *attr_accessor\b
21,^ *attr_reader\b
21,^ *attr_writer\b
21,^ *def +
// 行の強調表示2、クラス定義、モジュール定義。
85,^ *class +
85,^ *module +
// 特に強調表示1、文字定数、コマンドなど。
19,%[Qqxw]!(?:[^!\\]|\\.)*!
19,\x22[^\x22\\]*(?:\\.[^\x22\\]*)*\x22
19,\x27[^\x27\\]*(?:\\.[^\x27\\]*)*\x27
19,\x60[^\x60\\]*(?:\\.[^\x60\\]*)*\x60
// 特に強調表示2、コメント(行頭、またインデントされたコメントのみ)。
// 間違えると困るところ。
83,^ *#(?!{).*
99,else if
99,elseif
// (私の)他の強調表示の割り当て。
// 強調表示1、その他の識別子。if,else,end,puts,print,gsub,chop,chop!,...
// 強調表示2、グローバル変数など(記号が付くものを除く)。\$[0-9A-Za-z_]+
// 強調表示3、組込み変数・定数・関数。RUBY_VERSION,$KCODE,ARGV,p,...
(C)サンプル。
$ret = %x!command.com /c dir /a-d/on/b!
puts $ret, "-- end of dir --"
str = "expression"
%r!regular/#{str}/index\.html! =~ "regular/expression/index.html"
puts $&
str = "REgular/exPRESSION/foo.html"
$ret = str.gsub(/regular\/expression/i,'正規/表現')
puts $ret
he = ["He said \"Hello, World\".", %q!He said "Hello, World".!]
puts he
# comment
print <<"EOD"
#{RUBY_VERSION}
#{__FILE__}
EOD
print DATA.read
__END__
(D) ' の表示。
/here's/ =~ "string"
hoge = $' #postmatch
(E)不具合。
/foo's bar\./ =~ "foo's bar."
|<-regexp->|
|<- string ->|
|<-string->|
"foobar/hoge.c" =~ %r!/hoge\.c! #ruby 風でない。
|<- string ->|
|<- regexp ->|
|<-regexp->|
あちらを立てればこちらが立たず。
しかし、(C)や(D)の表記の方が、(E)よりも出現頻度が多いと思う。
/foo\x27s bar./ =~ "foo's bar."
"foobar\x2fhoge.c" =~ %r!/hoge\.c!
では。
|
|