第33回 Ruby/Rails 勉強会 - 演習 2 - 修正
no6v さんに指摘されたので修正。
--- cat.rb.org 2009-05-06 20:11:03.000000000 +0900 +++ cat.rb 2009-05-06 20:46:31.000000000 +0900 @@ -65,6 +65,7 @@ def squeeze_blank!(buf) buf.gsub!(/(\r?\n)\1+/, '\1\1') + buf.gsub!(/\A(\r?\n)\1+/, '\1') end def count_lines_and_print(opt, n, line) @@ -92,7 +93,7 @@ end def show_nonprinting_hash - c = to_printable_array('@'..'_', $C_OFFSET){|c| "^#{c}"} + 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}"}
他の人の解答を見ると、
- 入力に対してオプションに応じた加工をすれば結果が出る
というアプローチみたい。
一方 自分は、
- cat には 3 つの機能がある
- 空行をまとめる
- 行番号を付ける
- 非表示文字を可視化
と思って実装した。