В OSX 10.6 я использовал следующий код, чтобы что-то сделать с каждым выбранным в данный момент файлом в Finder:
app('Finder').selection.get.each do |item|
url =CGI::unescape(item.URL.get)
puts url
do_pdf(url[16..-1])
end
(запускается Keyboard Maestro).Это прекрасно работало, однако в OSX Lion поведение, похоже, изменилось.
selection.get по-прежнему возвращает правильное справочное приложение ('Finder'). Selection.get [0] => app "/ System/Library/CoreServices/Finder.app"disks["Home"]folders["stian"]folders["Downloads"]document_files["Comprehensive Examination (1) .doc "]
однако, когда я пытаюсьчтобы извлечь его с помощью URL.get, я получаю странное число: app('Finder').selection.get[0].URL.get
=> "file:///.file/id=6637683.2924283"
Как взять приведенную выше ссылку и получить путь POSIX в виде текстовой строки (/ Home / stian / Downloads / Комплексное обследование (1) .doc)?
Я могу получить текстовую версию всей ссылки следующим образом: app('Finder').selection.get[0].get.to_s
=> "app("/System/Library/CoreServices/Finder.app").disks["Home"].folders["stian"].folders["Downloads"].document_files["Comprehensive Examination (1).doc"]"
, поэтому я думаю, что я мог бы разобрать это вручную и построить путь POSIX, но этокажется очень громоздким и ломким.
Спасибо за любую помощь!