matchdata-highlight

正規表現のマッチ結果(Ruby の MatchData)に highlight メソッドを生やす小さな gem です。マッチした箇所の前後にマーカー文字列を挿し込んだ文字列を返します。マーカーを省略すると term/ansicolor の ANSI エスケープシーケンスが入り、ターミナル上でマッチ箇所が赤く表示されます。

ライブラリ本体は 1 ファイル約 40 行で、ソース末尾に呼び出し例がコメントで残っています。

puts "foobar foobar BAZ".match(/(foobar)/).highlight
puts /foobar/.match("foobar foobar BAZ").highlight("<B>", "</B>")
puts /foobar/.highlight("foobar foobar BAZ")
puts /foobar/.highlight("foobar foobar BAZ", :begin => '<B>', :end => '</B>')
puts /foobar/.highlight("foobar foobar BAZ", '<B>', '</B>')

内部設計

MatchDataRegexp の 2 クラスへのモンキーパッチだけでできています。処理の流れです。

matchdata-highlight の処理フロー図