comment_remove.rb

#Rubyスクリプト・コメント除去
#Usage: ruby comment_remove.rb RUBY_SCRIPT_FILE
  
  class NoFileError < RuntimeError ; end
  
begin
  name = ARGV.shift
  raise(ArgumentError, "引数がありません") if name.nil?
  raise(ArgumentError, "引数が多すぎます") unless ARGV.empty?
  unless File.exist?(name)
    raise(NoFileError, "#{name}: そのようなファイルは存在しません")
  end
  
rescue NoFileError => exception
  STDERR.puts exception.message
  exit(1)
  
rescue => exception
  STDERR.puts "#{exception.class}: #{exception.message}"
  exit(1)
  
end
  
  read_flag = true
  File.open(name, "r").each do |line|
    read_flag = false if /^(=begin)$/ =~ line
    STDOUT.puts line.chomp.split(/#/).shift if read_flag
    read_flag = true if /^(=end)$/ =~ line
  end