コマンドラインから入力したディレクトリに特定のファイル拡張子のファイルが含まれているかどうかを確認しようとしています。たとえば、フォルダ「Folder1」に別のフォルダ「Folder2」があり、Folder2に複数のファイル「test.asm」、「test.vm」、「test.tst」が含まれているとします。このようなコマンドラインからディレクトリまたはファイルを取得しています
ruby translator.rb Folder1/Folder2
また
ruby translator.rb Folder1/Folder2/test.vm
私がやろうとしているのはエラーチェックです。入力がフォルダであるかどうかをすでに確認しているので、フォルダに実際に.vmファイルが含まれているかどうかを確認する必要があります。私がこれまでに行ったことはこれです:
require 'pathname'
pn = Pathname.new(ARGV[0])
if ARGV.size != 1
puts "Proper usage is: ruby vmtranslator.rb file_directory\file.vm \nOR \nruby vmtranslator.rb file_directory\ where file_directory has multiple vm files test".split("\n")
elsif !pn.exist? && !pn.directory?
puts "Something is wrong with the file"
puts "Either try another file or check the file extension"
elsif pn.directory? && pn.children(false).extname.include?('.vm')
puts "this should print if Folder1 is the folder, but not if Folder2 is.."
vm_file1 = File.open("OPEN FILES WITH .vm AS EXTENSION)
elsif pn.exist? || pn.file?
puts "this is right"
vm_file = File.open(ARGV[0], "r")
asm_file = File.new(ARGV[0].sub('.vm', '.asm'), "w")
end
したがって、最初に引数が1つしかないかどうかを確認し、引数が1つしかない場合は、ファイルかディレクトリかを確認します。それ以外の場合はエラーを出力します。次に、ディレクトリかどうかを確認します。その場合、ディレクトリに実際に.vmファイルが含まれているかどうかを確認する必要があります。試しpn.each_child {|f| f.extname == '.vm'}
ましたが、trueを返す前に最初の値をチェックするだけです。ブール値を設定する以外に、trueを返す前に配列全体をチェックする簡単な方法はありますか?
そこにあるコードのいくつかは完了していません。特定の拡張子のファイルについてディレクトリをチェックする方法があるかどうかを尋ねているだけです。これまでの検索では何も見つかりません。