--- cat.rb 2009-05-11 18:28:58.552712500 +0900
+++ /cygdrive/g/cat.rb 2009-05-11 18:34:02.000000000 +0900
@@ -1,10 +1,7 @@
-#! /usr/local/bin/ruby19
+#! /usr/local/bin/ruby19 -EASCII-8BIT
require 'optparse'
-Encoding.default_internal = Encoding.find('ASCII-8BIT')
-Encoding.default_external = Encoding.find('ASCII-8BIT')
-
$NUMBER_WIDTH = 6
$C_OFFSET = "\C-@".ord - '@'.ord
@@ -46,6 +43,7 @@
opt[:show][:tabs] = true
opt[:show][:nonprinting] = true
end
+parser.on('-u', '(ignored)') # Don't care
parser.on('-v', '--show-nonprinting',
'use ^ and M- notation, except for LFD and TAB') do
opt[:show][:nonprinting] = true
@@ -73,7 +71,7 @@
if opt == :all || opt == :nonblank && /^\r?$/ !~ line
n += 1
- printf("%*d ", $NUMBER_WIDTH, n)
+ printf("%*d\t", $NUMBER_WIDTH, n)
end
n
@@ -93,9 +91,9 @@
end
def show_nonprinting_hash
- c = to_printable_array('@'..'_', $C_OFFSET){|c| "^#{c}"} << [0177.chr, "^?"]
- m = to_printable_array('@'..'_', $M_OFFSET){|c| "M-#{c}"}
- mc = to_printable_array('@'..'_', $M_C_OFFSET){|c| "M-^#{c}"}
+ c = to_printable_array('@'..'_', $C_OFFSET){|c| "^#{c}"} << [0x7f.chr, "^?"]
+ m = to_printable_array(' '..'~', $M_OFFSET){|c| "M-#{c}"}
+ mc = to_printable_array('@'..'_', $M_C_OFFSET){|c| "M-^#{c}"} << [0xff.chr, "M-^?"]
nltab = to_printable_array(%W[I J], $C_OFFSET){|c| "^#{c}"}
- Encoding.default_external を設定するだけでよかった。
- 何もしない -u オプションも重要。
- 行番号のフォーマットが微妙に違った。
- M- の範囲を間違ってた。