Как получить путь к текущему выбранному файлу в Finder с помощью rb-appscript в OSX Lion

В 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 по-прежнему возвращает правильную ссылку app('Finder').selection.get[0] => app"/System/Library/CoreServices/Finder.app"disks["Home"]folders["stian"]folders[ "Загрузки"]document_files["Комплексная экспертиза (1).doc"]

однако, когда я пытаюсь извлечь его с помощью URL.get, я получаю странное число: app('Finder').selection.get[0].URL.get => "file:///.file/id=6637683.2924283"

Как взять приведенную выше ссылку и получить путь POSIX в виде текстовой строки (/Home/stian/Downloads/Comprehensive Examination (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, но это кажется очень громоздким и хрупким.

Спасибо за любую помощь!


person Stian Håklev    schedule 08.08.2011    source источник


Ответы (1)


В питоне это

app('Finder').selection.get(resulttype=k.alias)[0].path

Я думаю, в Ruby это было бы

app('Finder').selection.get(:result_type=>:alias)[0].path
person LaC    schedule 08.08.2011