rubyでcatを書いてみる
昨日の作業記録
コマンドライン解析部分を書き直してクラスにまとめる
表示部分を一カ所にまとめる
もう少しまともするとこまではやりたいな。
unix上でファイルに実行権を与えればシェルスクリプトとして実行できる
コマンドライン解析部分を書き直してクラスにまとめる
表示部分を一カ所にまとめる
もう少しまともするとこまではやりたいな。
unix上でファイルに実行権を与えればシェルスクリプトとして実行できる
#!/usr/bin/ruby -Ke
#
# ruby cat
#
# K! 2007/5/13
#
require "optparse"
#-------------------------------------------
#コマンドライン解析
#-------------------------------------------
class CommandLine
attr_reader :config
def initialize()
@parser = OptionParser.new
@config = Hash.new
end
def parse()
@parser.on("-n", "--number", "行番号を付け加える") {
@config[:n] = true }
@parser.on("-b","--number-nonblank","空行を除いて行番号を付け加える") {
@config[:b] = true }
@parser.parse!
end
end
#-------------------------------------------
#メイン実行
#-------------------------------------------
commandLine = CommandLine.new
commandLine.parse
if ARGV[0] != nil
file = File.open(ARGV[0])
else
file = $stdin
end
line_number = 0
while line = file.gets
if commandLine.config[:n] || ( commandLine.config[:b] && line != "\n")
print sprintf("%6d", line_number = line_number + 1), ' '
end
print line
end
file.close