На самом деле, Rubocop даже не может проанализировать файл, потому что он имеет синтаксические ошибки.
Сообщение об ошибке syntax error: unexpected token $end
означает, что синтаксический анализатор ruby успешно выполнял синтаксический анализ, но затем он неожиданно обнаружил $end
, что является способом синтаксического анализа, чтобы сказать «конец файла».Он ожидал больше кода, но вместо этого нашел конец файла.
Вот как ваш код выглядит с правильным отступом:
#When convert button is pressed
File.rename("*.osz", "*.zip$")
dialog.directory(
def extract_zip(file, destination) FileUtils.mkdir_p(destination)
file_path = "./convert_temp/*.zip"
destination = "./convert_temp/osz/"
extract_zip(file_path, destination)
until File.exists?( ".osu$" ) == false do
File.rename("./convert_temp/osz/*.osu$", "*.txt$")
File.foreach(filename) do |file|
file_string = File.read('./convert_temp/osz/*.txt$')
if file_string.include?('Mode: 1')
puts 'Yes'
else
puts 'No'
end
end
end
Использование такого вида отступа позволяет легко увидеть, что есть некоторые пропущенные концы / скобки, потому что последняя строкаоставленный висеть в воздухе вместо того, чтобы закрываться к левому краю, с которого он начинался.
Дополнительные примечания:
dialog.directory(
def extract_zip(file, destination) FileUtils.mkdir_p(destination)
Очень необычно определять новый методвнутри вызова метода.File.open(def hello_world(..))
Не имеет большого смысла.
until File.exists?( ".osu$" ) == false do
Используете ли вы $
как способ обозначения "имя файла заканчивается на .osu"?Если да, это не работает так.Это будет искать файл с .osu$
в качестве имени.
File.foreach(filename) do |file|
Параметр file
не используется в следующем блоке, вы используете file_string
.
file_string = File.read('./convert_temp/osz/*.txt$')
Вы не можете одновременно читать несколько файлов.Кроме того, File.foreach
выше будет читать файл построчно, поэтому здесь вы пытаетесь прочитать его снова, внутри цикла, который уже читает его.