rcodetools - xmpfilterとDATA

前回の続き。
リダイレクトは面倒なので、xmpfilterで。って思ったら、ウマくいきません。
むー、xmpfilterでDATAはダメなのでしょうか?

# -*- coding: Windows-31J -*-
DATA.lines("\n").map{|line| line.sub(/^(\d*)-(\d*)-(\d*)$/){"(#{$1})\t#{$2}\t#{$3}"}}
# =>

__END__
03-1111-1111
048-222-2222
05-3333-3333
# ~> -:2:in `<top (required)>': uninitialized constant DATA (NameError)
# ~>  from -e:1:in `load'
# ~>  from -e:1:in `<main>'

わからないのでパスします(>_<)


ってことで、対応策としてMnzkStdPipeを利用。
f:id:smileruby:20100126002238j:image
こんな感じに指定して実行してみます。
今回はこんな感じのExcelデータを加工します。
f:id:smileruby:20100126002239j:image
Excelのデータを__END__以下に貼り付けて(貼り付けたら項目間に1もしくは2つの半角スペースが入ってました)ソースを必ず保存します。

# -*- coding: Windows-31J -*-
TABLE = {
  A: 1,
  B: 1,
  C: 2,
  D: 3,
  E: 3,
  F: 4,
  G: 5,
  H: 6,
  I: 7,
  J: 8,
  K: 8,
  L: 9
}
regexp = /^(\w)\s+(\d{4})\d+\s+(\d*)\s+(\d*)$/
puts DATA.lines("\n").map{|line| line.sub(regexp){"#{TABLE[$1.to_sym]},#{$2},#{$3},#{$4}"}.gsub(/\d+/, '"\&"')}
__END__
A 090101  1010000011  00
A 090101  1010000011  01
B 090102  1060000012  00
B 090102  1060000012  01
B 090102  1060000012  02
B 090102  1060000012  03
B 090102  1060000012  04
C 090201  1010000021  00
C 090201  1010000021  01
D 090301  1010000031  00
D 090301  1010000031  01
E 090302  1060000032  00
E 090302  1060000032  01
E 090302  1060000032  02
E 090302  1060000032  03
E 090302  1060000032  04
F 090401  1010000041  00
F 090401  1010000041  01
G 090501  1010000051  00
G 090501  1010000051  01
H 090601  1010000061  00
H 090601  1010000061  01
I 090701  1010000071  00
I 090701  1010000071  01
J 090801  1010000081  00
J 090801  1010000081  01
K 090802  1060000082  00
K 090802  1060000082  01
L 090901  1010000091  00

実行すると、オプション『別ウィンドウに出力する』にチェックが入ってるので別ウィンドウに結果が出力されます。
結果:

"1","0901","1010000011","00"
"1","0901","1010000011","01"
"1","0901","1060000012","00"
"1","0901","1060000012","01"
"1","0901","1060000012","02"
"1","0901","1060000012","03"
"1","0901","1060000012","04"
"2","0902","1010000021","00"
"2","0902","1010000021","01"
"3","0903","1010000031","00"
"3","0903","1010000031","01"
"3","0903","1060000032","00"
"3","0903","1060000032","01"
"3","0903","1060000032","02"
"3","0903","1060000032","03"
"3","0903","1060000032","04"
"4","0904","1010000041","00"
"4","0904","1010000041","01"
"5","0905","1010000051","00"
"5","0905","1010000051","01"
"6","0906","1010000061","00"
"6","0906","1010000061","01"
"7","0907","1010000071","00"
"7","0907","1010000071","01"
"8","0908","1010000081","00"
"8","0908","1010000081","01"
"8","0908","1060000082","00"
"8","0908","1060000082","01"
"9","0909","1010000091","00"

これでリダイレクトは必要なくなりました(^^)