Good day, I am learning Ruby,and doing some experaments.
I have a bit of code that searches the header of MP3 files
in a folder to get file 1 artist name. This is a variable artist.
Now I try to search a diferent directory and see if
a sub directory has the same name. So letts say the artist
is Abba and I do have a sub folder in e:\music with ABBA
how do I use Dir class to evaluate if Abba is found. I tried
changing Abba to ABBA and still I do not get expected results.
Artist = ABBA
Dir.chdir("e:/music")
Dir["#{artist}"]
I tried a number of things here, I need a positive or negitave
return; and, how to get the return value.
Good day, I am learning Ruby,and doing some experaments.
I have a bit of code that searches the header of MP3 files
in a folder to get file 1 artist name. This is a variable artist.
Now I try to search a diferent directory and see if
a sub directory has the same name. So letts say the artist
is Abba and I do have a sub folder in e:\music with ABBA
how do I use Dir class to evaluate if Abba is found. I tried
changing Abba to ABBA and still I do not get expected results.
Artist = ABBA
Dir.chdir("e:/music")
Dir["#{artist}"]
I tried a number of things here, I need a positive or negitave
return; and, how to get the return value.
Thanks for your reply, I had read the doc but could not get it to work
This is what I wound up doing and it does work.
Dir.chdir("e:/foldertest")
artist = 'Abba'
artist_check = Dir.glob("#{artist}", File::FNM_CASEFOLD)
puts artist_check
if "#{artist}" != "#{artist_check}"
puts "no match found"
else puts "found match"
end
badboy wrote:
···
Harry Nash schrieb:
Dir.chdir("e:/music")
Dir["#{artist}"]
I tried a number of things here, I need a positive or negitave
return; and, how to get the return value.
Thanks for your reply, I had read the doc but could not get it to work
This is what I wound up doing and it does work.
Dir.chdir("e:/foldertest")
artist = 'Abba'
artist_check = Dir.glob("#{artist}", File::FNM_CASEFOLD)
puts artist_check
if "#{artist}" != "#{artist_check}"
puts "no match found"
else puts "found match"
end
Dir.glob returns an array, not a string, so your "if artist !=
artist_check" will fail.
also, you won't find folders/files like "abba album" with your search,
if you want this add the star ("*")
artist is already a string, so no need for "#{...}", just use artist
and at last:
if you changed the if-construct it will fail, if Dir.glob found "abba",
because your "artist" is "Abba"
I removed the * as I only want exact match. There are only artist
folders such as ABBA acdc they do not have additional folders.
I do agree with you comment below; strange though, if I change
the folder ABBA to FBBA my code returns no match found, then
I change the name back to ABBA, I get found match. Sooo it does work,
yet if it's wrong it will then break some time. I think a different
Dir class command is needed not glob, I am trying only for
a ture or false return not the aray.
Again thanks for your input; and on Sunday too!
badboy wrote:
···
Harry Nash schrieb:
end
Dir.glob returns an array, not a string, so your "if artist !=
artist_check" will fail.
also, you won't find folders/files like "abba album" with your search,
if you want this add the star ("*")
artist is already a string, so no need for "#{...}", just use artist
and at last:
if you changed the if-construct it will fail, if Dir.glob found "abba",
because your "artist" is "Abba"