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を利用。
こんな感じに指定して実行してみます。
今回はこんな感じのExcelデータを加工します。
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"
これでリダイレクトは必要なくなりました(^^)