#!/usr/bin/ruby -Ke #usage: tail -256 relative_collision.????.? | ruby #{$0} (--to-tc|--to-kw) require 'kconv' opt = ARGV.shift arr = [] for i in 0..2 arr[i] = [] for j in 0...40 arr[i][j] = Array.new(40, nil) end end while gets next if $_ !~ /^[rl]{2}/ $_ = Kconv.kconv($_, Kconv::EUC, Kconv::SJIS) b1 = b2 = 0 case $_ when /^lr/ b2 = 5 when /^rl/ b1 = 5 when /^rr/ b1 = b2 = 5 end i = $_[3..3].to_i - 2 for j in 0..3 for k in 0..3 gets chop! $_ = Kconv.kconv($_, Kconv::EUC, Kconv::SJIS) line = $_.split(/¡Ã/) line.each_with_index {|l, l2| l = l.split(//) l.each_with_index {|c, l1| arr[i][k*10+b1+l1][j*10+b2+l2] = c if c != "¡¡" } } end gets end end if opt == '--to-tc' #### num2str = %w(1 2 3 4 5 6 7 8 9 0 q w e r t y u i o p a s d f g h j k l ; z x c v b n m , . /) #2st table for i in 0...40 print '"' for j in 0...40 print arr[0][j][i] || "¢£" end print "\" ;#{num2str[i]}\n" end #3st table for i in 0...40 print " (#{i} ; #{num2str[i]}\n" print "\t(#{i} . ; #{num2str[i]}\n" j = [arr[1][i][0...10], arr[1][i][10...20], arr[1][i][20...30], arr[1][i][30...40]] print "\t [" + j.collect {|k| k.collect {|l| (l ? '"' + l + '"' : " nil") }.join(' ') }.join("\n\t ") + "]))\n" end else #'--to-kw' #### puts '#define table-name "TH"' puts '#define key-layout QWERTY-JIS' $func = [ ' , , , , , , , @1, , ,', ' , , , , , , , @2, , ,', ' , @p, @Z, @K, , , , @3, , ,', ' , , , @h, @H, , @m, @4, , ,', ' , , , , , , , @5, , ,', ' , , , , , @!, , @6, , ,', ' , , , @b, , , @B, @7, , ,', ' , , , , , , , @8, , ,', ' , , , , , , , @9, @q, ,', ' , , , , , , , , , ,'] def print_kw_pseudo(arr, nn, i) puts '{' for jy in 0..3 print ' ' * (nn+2) for jx in 0..9 j = jy * 10 + jx if nn == 2 && i < 10 && jy == 0 print $func[i] break end if nn < 2 && j == i print_kw_pseudo(arr, nn+1, i) print ' ' * (nn+2) + ' ' * (i.modulo(10)+1) if i.modulo(10) != 9 else c = arr[nn][i][j] if c print '"', Kconv.kconv(c, Kconv::SJIS, Kconv::EUC), '",' else print ' ,' end end end print "\n" if !(nn < 2 && i.modulo(10) == 9 && i/10 == jy) end if nn == 0 puts ' ' * (nn+2) + ' @v, , , , , , , , },' #elsif nn == 1 # puts ' ' * (nn+2) + $func[r1] + '},' else puts ' ' * (nn+2) + ',,,,,,,,},' end end puts '{' for i in 0...40 print ' ' print_kw_pseudo(arr, 0, i) end puts ' @v, @v, @v, @v, @v, @v, @!, @v, @v}' end