lib/tefil.rb in tefil-0.0.0 vs lib/tefil.rb in tefil-0.0.1
- old
+ new
@@ -26,57 +26,57 @@
# If indicated file(s) not found,
# this program notify on stderr and does not throw an exception.
#
module TextFilter
- class NotRedefinedMethodError < Exception; end
- class TypeError < Exception; end
+ class NotRedefinedMethodError < Exception; end
+ class TypeError < Exception; end
- # 保持している入力ファイル対して、順に処理を実行する。
- # filenames.size が 0 ならば STDIN からの入力を待つことになる。
- #
- # STDIN からの入力だった場合、出力先は必ず STDOUT になる。
- # STDIN からの入力ではない、すなわちファイル入力であった場合、
- # - overwrite_flag が false ならば STDOUT に出力する。
- # - overwrite_flag が true ならば 個々のファイルに上書きする。
- #
- # Process of each file is defined in 'process_stream' method.
- #
- def self.run(filenames, overwrite_flag = false)
- #p self; exit
- if filenames.size == 0
- self.process_stream( $stdin, $stdout )
- else
- #p filenames
- filenames.each do |filename|
- if overwrite_flag
- tempfile = Tempfile.new("tefil", "/tmp")
- File.open(filename, "r") do |input_file|
- self.process_stream(input_file, tempfile)
- end
- tempfile.close
- tempfile.open
- File.open(filename, "w") do |output_file|
- tempfile.each { |line| output_file.puts(line) }
- end
- else
- File.open(filename, "r") do |input_file|
- self.process_stream(input_file, $stdout)
- end
- end
- end
- end
- end
+ # 保持している入力ファイル対して、順に処理を実行する。
+ # filenames.size が 0 ならば STDIN からの入力を待つことになる。
+ #
+ # STDIN からの入力だった場合、出力先は必ず STDOUT になる。
+ # STDIN からの入力ではない、すなわちファイル入力であった場合、
+ # - overwrite_flag が false ならば STDOUT に出力する。
+ # - overwrite_flag が true ならば 個々のファイルに上書きする。
+ #
+ # Process of each file is defined in 'process_stream' method.
+ #
+ def self.run(filenames, overwrite_flag = false)
+ #p self; exit
+ if filenames.size == 0
+ self.process_stream( $stdin, $stdout )
+ else
+ #p filenames
+ filenames.each do |filename|
+ if overwrite_flag
+ tempfile = Tempfile.new("tefil", "/tmp")
+ File.open(filename, "r") do |input_file|
+ self.process_stream(input_file, tempfile)
+ end
+ tempfile.close
+ tempfile.open
+ File.open(filename, "w") do |output_file|
+ tempfile.each { |line| output_file.puts(line) }
+ end
+ else
+ File.open(filename, "r") do |input_file|
+ self.process_stream(input_file, $stdout)
+ end
+ end
+ end
+ end
+ end
- private
+ private
- # Process a file.
- # An argument 'in_io' indicates an io (file handle) for input.
- # Another argument 'out_io' indicates an io (file handle) for output.
- # This method must be redefined in a subclass or be overridden.
- # If not redefined, raise an exception TextFilter::NotRedefinedMethodError.
- def self.process_stream(in_io, out_io)
- raise NotRedefinedMethodError
- end
+ # Process a file.
+ # An argument 'in_io' indicates an io (file handle) for input.
+ # Another argument 'out_io' indicates an io (file handle) for output.
+ # This method must be redefined in a subclass or be overridden.
+ # If not redefined, raise an exception TextFilter::NotRedefinedMethodError.
+ def self.process_stream(in_io, out_io)
+ raise NotRedefinedMethodError
+ end
end