- 498 名前:デフォルトの名無しさん [2008/05/11(日) 16:47:40 ]
- fw(findwordの略)というプログラムを作ろうとしています。
fw -fp '/usr/include/**/*.h' '~/**/*.h' -wp 'define\s+\w+' -pp '%1 %2 %3'という感じで -fp の後ろに複数のファイルパターンを -wp の後ろに複数の単語パターンを -pp の後ろに表示用のフォーマットを指定できるようにしたいのですが、optparseをうまく操れません 上記の実行例だと ["/usr/include/**/*.h", "~/**/*.h"] ["define\\s+\\w+"] と表示されて欲しいのですが、実際は ["/usr/include/**/*.h", "~/**/*.h"] ["define\\s+\\w+", "%1 %2 %3"] と表示されてしまいます printpattern = "%1:%2:%3" # filename:linnum:line print = proc {|filename,linenum,line| STDOUT << (printpattern %filename %linenum %line) << "\n" } filepatterns = [] wordpatterns = [] ARGV.options {|opt| dest = wordpatterns opt.on('-fp' , '--filepattern') { dest = filepatterns } opt.on('-wp' , '--wordpattern') { dest = wordpatterns } opt.on('-pp S' , '--printpattern S' , String) {|s| printpattern = s } opt.order! {|s| dest << s } p filepatterns p wordpatterns }
|

|